Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Получение токена Yandex путём отправления POST-запроса через Postman

javascript
Теги: #<Tag:0x00007f7b63bb97f8>

#1

Необходимо получить токен Yandex POST запросом из Postman.
Делаю всё по инструкции:

  1. Зарегистрировал приложение с Callback URI https://www.getpostman.com/oauth2/callback
  2. Получаю code вручную через ссылку с полученным после регистрации приложения идентификатором
    https://oauth.yandex.ru/authorize?response_type=code&client_id=<идентификатор_приложения> .
  3. В postman ввожу
    https://oauth.yandex.ru/token?grant_type=authorization_code&code=тут_код_из_пункта_2&client_id=тут_id&client_secret=тут_пароль
  4. В headers Content-Type=application/x-www-form-urlencoded
  5. Подключаю куки через Postman Interceptor.

POST-запрос выдаёт:

{
  "error_description": "grant_type not in POST",
  "error": "invalid_request"
}

В кодах ошибок сказано:
invalid_request ― неверный формат запроса (один из параметров в теле не указан, или указан дважды).

Но в инструкции написано:
Скрипт выполняет POST-запрос на https://oauth.yandex.ru/token, передавая следующие параметры:
grant_type = authorization_code
code = <код_подтверждения>
client_id = <идентификатор_приложения>
client_secret = <пароль_приложения>

Что не так не понимаю. Есть мысль, что в Pre-request script прописать получение code, но не знаю как это сделать на java-script.
Помогите :disappointed_relieved:


(ex3me0) #2

Не так давно Директ.АПИ юзал
Если код из п.2 получен верно - дальше проблем нет никаких.
Возможно юзается GET вместо POST’a, из-за чего и ошибки соответствующие. Нужен дамп всех запросов, снятый фиддлером


#3

Дамп в каком виде?
Пока вижу в фиддлере, что посылается POST:
POST /token?grant_type=authorization_code&code=9446123&client_id=мой_id&client_secret=мой_пароль HTTP/1.1

HTTP/1.1 400 BAD REQUEST

Пробовал и из fiddler тоже такой запрос делать. Результат тот же самый.

POST https://oauth.yandex.ru/token?grant_type=authorization_code&code=9446123&client_id=секретно&client_secret=секретно HTTP/1.1
Host: oauth.yandex.ru
Connection: keep-alive
Content-Length: 44
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
Origin: chrome-extension://aicmkgpgakddgnaphhhpliifpcfhicfo
Content-Type: application/x-www-form-urlencoded
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: yandexuid=584747891467794087; _ym_uid=1475560169646465233; yabs-frequency=/4/0G000EX2yrS00000/; i=4AWL1hu88Y4H8lOWoCbAyVTksDFg4mQHpm9w6Nc32KRa9BZLo4ALApW2xw1A7hSNrulmyEcggAEyBd1tG2195cAY/A==; yandex_gid=195; Session_id=3:1476947083.5.0.1476947083929:-8HDbQ:52.0|195790597.0.2|153281.417455.8t5n9bsUYqAoK7ABz3pFYDKVQ0U; sessionid2=3:1476947083.5.0.1476947083929:-8HDbQ:52.1|195790597.0.2|153281.438712.RwdGtRvXzWZPfWhIeIRiDIvELEk; L=RkBRCHsOBVJUVVAMW1t8Xm5ifAFMY3FHPwxVLgpGFClEGA==.1476947083.12719.351710.49e4d5f639374fed0d561b95b72007f6; yandex_login=тутМойЛогин; zm=m-everything_index.css%3Awww_QCnVgW6kVOcJJipjzM8kKss7H6Y%3Al; ys=udn.cDpyb21hbnN2ZXNo#wprid.1476954616091933-1155329938788057880400215-sas1-3280; yp=1508058491.dsws.5#1508058491.dswa.0#1508046926.dwbs.3#1479546617.los.1#1479546617.losc.0#1492714780.szm.1%3A1366x768%3A1304x678#1507875295.dwys.1#1507875301.st_set_s.1#1508041482.st_vb_s.1#1479538776.ygu.1#1792307083.udn.cDpyb21hbnN2ZXNo#1508058491.dwss.1

------WebKitFormBoundaryD4TsZEfxFEFNDn7c--


(ex3me0) #4

Мне кажется, что шлете POST, но без параметров в body, а передаете их как GET-параметры

Скриншот самого постмана можете сделать? Чтобы было видно какие поля Вы заполняли


#5


(ex3me0) #6

Если в поле URL оставить только: https://oauth.yandex.ru/token - лучше не становится?
Чтобы вот так это выглядело:
http://i.imgur.com/ONpGSrf.jpg


#7

Просто параметры стираются. Ошибка и ответ те же.


(ex3me0) #8

Очень странно. Вот сделал 10 секунд назад: http://prntscr.com/cx0359 , имхо Вы просто “как-то не так” юзаете постман)

Но справедливости ради: вкладка авторизации у меня выглядит вот так http://prntscr.com/cx03qb (т.е. авторизацию постмановскую я не юзал, просто получил код в браузере)


#9

Огромное спасибо!!!
Я параметры посылал не в теле. Видимо проблема в этом. Как у Вас на скриншоте сделал и тоже заработало!


(ex3me0) #10

Ну как я и говорил ранее. Велком)