Skip to content

Instantly share code, notes, and snippets.

@1234ru
Last active September 15, 2023 17:59
Show Gist options
  • Save 1234ru/142fcc7edeb5038d49f35356a27e15ec to your computer and use it in GitHub Desktop.
Save 1234ru/142fcc7edeb5038d49f35356a27e15ec to your computer and use it in GitHub Desktop.
Как получать и использовать авторизационный токен Яндекса

Токен не существует сам по себе, а выдается приложению от имени чьего-то аккаунта в Яндексе. Таким образом владелец аккаунта разрешает этому приложению доступ к определенным операциям со своим аккаунтом. Токен является реализацией такого разрешения.

1. Регистрируем приложение

Заполняем форму на https://oauth.yandex.ru/client/new. Обязательно сделать следующее:

  • указать название приложения (например, "watches.ru site engine")
  • в разделе Callback URI нажать "Подставить URL для разработки", в поле возникнет адрес от Яндекса
  • среди доступов найти нужный раздел (например, для Яндекс.Маркета и Беру.ру это Яндекс.Маркет).

После отправки формы отобразится страница с параметрами приложения, отсюда нужно взять его идентификатор и пароль.

В дальнейшем доступ к этим данным осуществляется по адресу https://oauth.yandex.ru/client/<id приложения>. Страница будет доступна только тому аккаунту, от имени которого было создано приложение (создать приложения без аккаунта в Яндексе нельзя).

2. Разрешаем приложению доступ - получаем токен

  • Заходим на Яндекс с учетной записью пользователя, к аккаунту которого приложение должно запросить доступ. (Он может отличаться от аккаунта, из-под которого было создано приложение, но может и совпадать.)

  • Взять идентификтор приложения, подставить его в адрес
    https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор приложения>
    и открыть страницу. Нажать Разрешить.

  • Прямо на странице будет отображен новый токен. Его нужно куда-то сохранить, т.к. как его посмотреть потом - пока неизвестно. А в адресе в параметре expires - время жизни в секундах (например, для приложения с доступом к Яндекс.Маркету это один год).

Эти процедуры подробно описаны здесь: https://tech.yandex.ru/oauth/doc/dg/tasks/get-oauth-token-docpage/

3. Отправляем токен с HTTP-запросами

В состав запросов токен включается с помощью заголовка Authorization: Oauth, куда входит также идентификатор приложения:

Authorization: OAuth oauth_token="авторизационный_токен", oauth_client_id="идентификатор_приложения"

См. https://yandex.ru/dev/market/partner-marketplace-cd/doc/dg/concepts/authorization-docpage/

@Kloshar
Copy link

Kloshar commented Sep 13, 2021

Привет! У меня при вставке запроса с номером id приложения выскакивает ошибка 400 Отсутствует необходимый параметр redirect_uri. Если добавить адрес redirect_uri=yandexta://******.ru , то после долгого ожидания появляется ошибка 504 Gateway Time-out. Можете подсказать куда копать?

@1234ru
Copy link
Author

1234ru commented Sep 13, 2021

Даже не знаю, сам не сталкивался с таким

@Kloshar
Copy link

Kloshar commented Sep 13, 2021

Жаль, но спасибо за ответ!

@DemidovArtem
Copy link

Привет! У меня при вставке запроса с номером id приложения выскакивает ошибка 400 Отсутствует необходимый параметр redirect_uri. Если добавить адрес redirect_uri=yandexta://******.ru , то после долгого ожидания появляется ошибка 504 Gateway Time-out. Можете подсказать куда копать?

Привет!
А тебе в итоге удалось решить эту проблему?

@Kloshar
Copy link

Kloshar commented Apr 21, 2022

А тебе в итоге удалось решить эту проблему?

Здарова! Прошло некоторое время уже, сложно вспомнить где и какие былои проблемы. Могу выложить свой код, относящийся к яндексу. Не знаю точно как тут выкладывать, вот ссылка: https://github.com/Kloshar/SendFilesTo/blob/master/MailSender.cs

@DemidovArtem
Copy link

Хорошо, спасибо!

@iamguruman
Copy link

спасибо большое! очень все классно написано! +5 в карму!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment