Implementé una API REST y la protegí con el portero. He escrito un pequeño programa de cliente para acceder y funciona bien con el flujo de credenciales del propietario del recurso.Publicación en OAuth con las credenciales del cliente con Doorkeeper
Ahora estoy tratando de implementar una llamada usando las credenciales del cliente flow. Así que seguí el ejemplo en el enlace.
Todo funciona muy bien cuando estoy usando una solicitud GET, pero cuando estoy usando una solicitud POST, obtengo un 401 Unauthorized
. Esta es una llamada a un método que no requiere un propietario de recursos.
Lo único relevante que tengo en mi controlador de API es:
doorkeeper_for :all
no he implementado ningún ámbitos o nada de eso (¿estoy obligado a?).
Mi código de cliente es el siguiente (exactamente como en el example in github):
require 'rest-client'
require 'json'
client_id = 'my_client_id...'
client_secret = 'my_client_secret...'
response = RestClient.post 'http://localhost:3000/oauth/token', {
grant_type: 'client_credentials',
client_id: client_id,
client_secret: client_secret
}
token = JSON.parse(response)["access_token"]
# this line works great:
RestClient.get 'http://localhost:3000/api/v1/flights.json', { 'Authorization' => "Bearer #{token}" }
# this line always fails (401 Unauthorized):
RestClient.post 'http://localhost:3000/api/v1/flights.json', { 'Authorization' => "Bearer #{token}" }
Cualquier idea de lo que puede estar haciendo mal? ¿Hay algo especial que deba hacer en mi aplicación para habilitar el flujo de credenciales del cliente?
Leer su respuesta me ayudó a solucionar un problema que estaba teniendo. Gracias por regresar y resolver esto! – lyonsinbeta