2016-11-05 2 views
0

Ich versuche eine REST-API mit Symfony 3.1 und dem FOSRestBundle, FOSUserBundle und FOSOAuthServerBundle zu erstellen. Ich habe es geschafft, dies gemäß der Anleitung unter https://gist.github.com/tjamps/11d617a4b318d65ca583 zu erreichen.FOSOAuthServerBundle: Ungültiger Parameter grant_type oder Parameter fehlt

Ich kämpfe jetzt bei der Authentifizierung. Wenn ich machen an den Server zur Authentifizierung eine POST-Anfrage (localhost: 8000/oauth/v2/Token) mit den in json codierten Parameter in der Anfrage Körper:

{ 
    "grant_type": "password", 
    "client_id": "1_myveryverysecretkey", 
    "client_secret": "myveryverymostsecretkey", 
    "username": "theuser", 
    "password": "thepassword" 
} 

Die zusätzlichen HTTP Headers sind die folgenden:

Accept: application/json 
Cache-Control: no-store, private 
Connection: close 
Content-Type: */json 

der Kunde in der Tabelle db oauth2_client hat das "Passwort" grant_type a:1:{i:0;s:8:"password";}, wie von der Führung vorgeschlagen.

Der Server akzeptiert die Anfrage, aber ich bekomme immer die Antwort

{"error":"invalid_request","error_description":"Invalid grant_type parameter or parameter missing"} 

Irgendwelche Vorschläge, was ich fehle? Vielen Dank!

+0

Gibt es niemanden, der einen Hinweis haben könnte? – RalphP

Antwort

0

Ich hatte das gleiche Problem. Es scheint, dass fosOAuthBundle json nicht akzeptiert. Wenn Sie die Abfrage mit Formularfeldern senden, wird es funktionieren.

0

Dies liegt daran, dass FOSRestBundle einen Body-Listener verwendet, der unterstrichene Schlüssel in camel case konvertiert. Die Parameter, die Ihr OAuth2-Server erhält, sind also nicht grant_type, sondern grantType, die nicht verarbeitet werden können und daher gibt es diesen Fehler.

Eine Lösung hierfür wäre, einen benutzerdefinierten Array-Normalizer auf den Body-Listener von fos rest zu verwenden.

Verwandte Themen