2017-01-27 3 views
0

Я отправляю запрос от моего приложения MVC к моему WebAPI, где реализован OAuth2. Запрос что-то вроде:ASP.NET WebAPI - OAuth возвращает «error»: «invalid_grant» после успешного завершения проверки

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

grant_type:password 
username:someusername 
password:somepassword 

Все в порядке, проверки пользователя с успехом, но ответ, который возвращается к моему MVC является:

StatusCode:BadRequest 
Content:invalid_grant 

CORS допускается:

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

Не знаю, в чем дело. Он работал неплохо раньше ...

ответ

0

Не знаю, в чем дело. Он работал неплохо раньше ...

Ваша полезная нагрузка вашего запроса неверна. Вы указали application/application/x-www-form-urlencoded как Content-Type, который является недопустимым и не поддерживается Web API. Причина, по которой вы получаете ошибку invalid_grant, заключается в том, что веб-API не понял этот запрос и даже не смог прочитать параметр grant_type.

Так что вы можете исправить ваш запрос:

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

grant_type=password&username=someusername&password=somepassword 

Здесь мы используем стандартный и правильный тип содержимого application/x-www-form-urlencoded а также тело запроса уважает тип контента, который мы указали.

В качестве альтернативы вы могли бы использовать JSON:

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

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

Я сделал ошибку в посте (только). Я использую application/x-www-form-urlencoded – Marox

+0

ОК, тогда единственная оставшаяся вещь для вас - это исправить вашу полезную нагрузку, чтобы она соответствовала типу содержимого «application/x-www-form-urlencoded», как показано в моем ответе: 'grant_type = пароль и имя пользователя = someusername и пароль = somepassword' –

+0

' POST/API/маркер HTTP/1.1 Ведущий: локальный: 57742 Content-Type: применение/х-WWW-форм-urlencoded Accept: приложения/JSON Cache-Control: нет кэша Почтальон-Токен: c4358da6-4ac7-2fea-eb36-7d9964208cf6 grant_type = пароль и имя пользователя = Яцек% 40example.com и пароль =% 242a% 2410% 24bVkBdoNTxdh3jbMw4twyDeefj5iOT9PkOXp6hzxyEJiIhDTjfv0Om' – Marox

Смежные вопросы