Проверьте параметр " 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, на который вы пытаетесь отправить сообщение. Служба, которую вы пытаетесь обратиться не существует или недоступен.