Проверьте параметр " grant type
Я использую OAuth 2.0 для авторизации в соответствии с этой документацией (https://developers.vendhq.com/documentation/oauth.html#oauth) и наличие этой ошибки. Я использую fiddler
{ "error": "invalid_request", "error_description": "The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Check the "grant_type" parameter." }
запрос
метод: POST
тип контента: application/x-www-form-urlencoded
URL: https: / / {domain_prefix}.vendhq.com/api/1.0/token
параметры :
код = {код}
client_id = {app_id}
секрет клиента = {app_secret}
grant_type = authorization_code произвести
параметр redirect_uri = {параметр redirect_uri}
2 ответов
на RFC6749, раздел 4.1.3, закодированное тело запроса POST должно выглядеть как code={code}&client_id={app_id}&client_secret={app_secret}&grant_type=authorization_code&redirect_uri={redirect_uri}
.
пример:
grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb&client_id=CLIENT_ID_1234&client_secret=CLIENT_SECRET
Не забудьте кодировать Uri перенаправления:http://foo.bar/
=>http%3A%2F%2Ffoo.bar%2F
Что касается ошибки аутентификации, это может быть, потому, что сервер авторизации не поддерживает секрет клиента в post request (или ваш клиент не может его использовать).
Затем попробуйте добавить заголовок авторизации с базовой схемой аутентификации.
Значение этого заголовка -Basic {ENCODED_AUTHENTICATION}
С {ENCODED_AUTHENTICATION} =base64(client_id + ':' + client_secret)
С этим заголовком,client_id
и client_secret
в запросе post должны быть удалены. Ваши параметры запроса становятся code={code}&grant_type=authorization_code&redirect_uri={redirect_uri}
.
вам нужно будет проверить URL, на который вы пытаетесь отправить сообщение. Служба, которую вы пытаетесь обратиться не существует или недоступен.