2012-07-30 18 views
10

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?

Respuesta

16

Me di cuenta. El problema fue que no usé RestClient.post correctamente. El segundo parámetro debe ser la carga y el tercero debe ser el encabezado. Debe ser algo como esto:

RestClient.post 'http://localhost:3000/api/v1/flights.json', {}, { 'Authorization' => "Bearer #{token}" } 
+2

Leer su respuesta me ayudó a solucionar un problema que estaba teniendo. Gracias por regresar y resolver esto! – lyonsinbeta

Cuestiones relacionadas