Аутентификация¶
ycli нужны два значения. Он читает их из окружения или из файла .env в рабочем каталоге:
YANDEX_ID_OAUTH_TOKEN=... # OAuth-токен Яндекса с доступом к Трекеру, Вики и Формам
YANDEX_ID_ORGANIZATION_ID=... # идентификатор вашей организации в Яндекс 360
ycli передаёт идентификатор организации в заголовке X-Org-Id каждому сервису.
Получите токен командой ycli auth login¶
Яндекс выдаёт OAuth-токены только через зарегистрированное приложение.
- Зарегистрируйте приложение на oauth.yandex.ru и выдайте ему
права на Трекер, Вики и Формы — чтение и запись. Одних прав на чтение хватает только
для
ycli mcp start --read-only. -
Положите в
.envего ClientID, а если нужен сценарий без браузера, то и Client secret:YANDEX_OAUTH_CLIENT_ID=... YANDEX_OAUTH_CLIENT_SECRET=... # необязательно: включает device flow -
Выполните
ycli auth login. Команда получит токен, определит вашу организацию и запишет оба значения в.env:- если заданы client id и secret, используется device flow: ycli печатает код и ссылку
https://ya.ru/device, вы подтверждаете вход там, и ycli получает токен. Это работает и по SSH; - если задан только client id или передан
--implicit, используется browser flow: ycli открывает страницу авторизации Яндекса, вы подтверждаете вход и вставляете показанный токен обратно.
- если заданы client id и secret, используется device flow: ycli печатает код и ссылку
Проверьте учётные данные¶
ycli auth status # чей это токен, какая организация, какие сервисы его принимают
ycli tracker auth status # только один сервис (также wiki, forms)
ycli doctor # все проверки по порядку и что исправить в каждой, которая не прошла
ycli doctor ещё показывает, где задано каждое значение (в окружении или в файле .env, само значение — никогда) какие extras установлены и не вышел ли новый релиз; для агента добавьте -o json. Все три команды завершаются с ненулевым кодом, если сервис отклонил токен. Для названия организации нужен
необязательный доступ directory:read_organization; без него вы получите идентификатор и пояснение.
Вручную¶
Device flow:
# 1. запустить процесс: вернёт user_code и verification_url
curl -s -X POST https://oauth.yandex.ru/device/code -d "client_id=$YANDEX_OAUTH_CLIENT_ID"
# 2. открыть https://ya.ru/device, ввести user_code, подтвердить
# 3. обменять device_code на токен
curl -s -X POST https://oauth.yandex.ru/token \
-d grant_type=device_code -d "code=<device_code>" \
-d "client_id=$YANDEX_OAUTH_CLIENT_ID" -d "client_secret=$YANDEX_OAUTH_CLIENT_SECRET"
Browser flow: откройте https://oauth.yandex.ru/authorize?response_type=token&client_id=<ClientID>
в браузере, где вы вошли в аккаунт, подтвердите доступ и скопируйте токен со страницы.
Идентификатор организации: tracker.yandex.ru/admin/orgs, ваша организация, поле с идентификатором.
Документация Яндекса¶
| Шаг | Документация Яндекса |
|---|---|
| Регистрация OAuth-приложения | Регистрация приложения |
| Device flow | Ввод кода на странице авторизации |
| Browser flow | Получение токена вручную |
| Токен и заголовок организации для каждого сервиса | Доступ к API: Трекер · Вики · Формы |