Ich habe eine REST-API implementiert und mit Doorkeeper geschützt. Ich habe ein kleines Client-Programm geschrieben, um darauf zuzugreifen, und es funktioniert gut mit dem Ressource-Besitzer-Anmeldedatenfluss.POSTing in OAuth mit Client-Anmeldeinformationen mit Doorkeeper
Jetzt versuche ich einen Anruf mit den Client-Anmeldeinformationen flow zu implementieren. Also ich habe das Beispiel im Link verfolgt.
Alles funktioniert gut, wenn ich eine GET-Anfrage verwende, aber wenn ich eine POST-Anfrage verwende, bekomme ich eine 401 Unauthorized
. Dies ist ein Aufruf einer Methode, für die kein Ressourcenbesitzer erforderlich ist.
Die einzige relevante, was ich in meinem API-Controller haben, ist:
doorkeeper_for :all
ich nicht implementiert haben keine Bereiche oder gar nichts von dieser Art (bin verpflichtet, ich?).
Mein Client-Code sieht wie folgt aus (genau wie in den 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}" }
Jede Idee, was ich kann tun, falsch sein? Gibt es etwas Spezielles, das ich in meiner Anwendung tun sollte, um den Client-Berechtigungsnachweis zu ermöglichen?
Das Lesen Ihrer Antwort half mir, ein Problem zu beheben, das ich hatte. Danke, dass du zurückgekommen bist und das gelöst hast! – lyonsinbeta