2017-01-27 4 views
0

Ich sende eine Anfrage von meiner MVC-Anwendung an meine WebAPI, wo OAuth2 implementiert ist. Antrag ist so etwas wie:ASP.NET WebAPI - OAuth gibt "error" zurück: "invalid_grant" nach Bestätigungserfolg

Content-Type: application/application/x-www-form-urlencoded 
Accept: application/json 

grant_type:password 
username:someusername 
password:somepassword 

alles in Ordnung ist, Benutzer mit einem Erfolg bestätigt, aber die Reaktion, die zu meinem MVC zurückgibt, ist:

StatusCode:BadRequest 
Content:invalid_grant 

CORS erlaubt:

app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); 

Keine Ahnung, was los ist. Es funktionierte ziemlich gut vor ...

Antwort

0

Keine Ahnung, was los ist. Es funktionierte ziemlich gut vor ...

Ihre Anfrage Payload ist falsch. Sie haben application/application/x-www-form-urlencoded als Inhaltstyp angegeben, der ungültig ist und von der Web-API nicht unterstützt wird. Der Grund dafür, dass Sie den Fehler invalid_grant erhalten, ist, weil die Web-API diese Anforderung nicht verstanden hat und nicht einmal den Parameter grant_type daraus lesen konnte.

So könnten Sie Ihre Anfrage fix:

Content-Type: application/x-www-form-urlencoded 
Accept: application/json 

grant_type=password&username=someusername&password=somepassword 

Hier verwenden wir einen Standard und korrekten Content-Type von application/x-www-form-urlencoded und auch die Anforderung Körper achtet der Inhaltstyp, die wir angegeben.

Alternativ können Sie JSON verwendet haben:

Content-Type: application/json 
Accept: application/json 

{ 
    "grant_type": "password", 
    "username": "someusername", 
    "password": "somepassword" 
} 
+0

Ich habe einen Fehler in der Post (nur). Ich benutze die Anwendung/x-www-form-urlencoded – Marox

+0

OK, dann ist die einzige verbleibende Sache für Sie, Ihre Payload zu reparieren, so dass es den 'application/x-www-form-urlencoded' Inhaltstyp respektiert, wie in meiner Antwort gezeigt: 'grant_type = password & username = beliebigerbenutzername & password = somepassword' –

+0

' POST/api/Token HTTP/1.1 Host: localhost: 57742 Content-Type: application/x-www-form-urlencoded Accept: application/json Cache-Control: no-cache Postman-Token: c4358da6-4ac7-2fea-eb36-7d9964208cf6 grant_type = Passwort & username = jacek% 40example.com & password =% 242a% 2410% 24bVkBdoNTxdh3jbMw4twyDeefj5iOT9PkOXp6hzxyEJiIhDTjfv0Om' – Marox

Verwandte Themen