Как настроить доступы Яндекс Метрики в приложении Яндекса
Многие разработчики сталкиваются с проблемой: при создании приложения в Яндекс.OAuth интерфейс не отображает поля для указания доступов к сервисам, например к Яндекс Метрике. После получения токена и попытке обращения к API приходит ошибка 403 (Forbidden). В этой статье разберём, где задаются права доступа и как правильно передать параметр scope для работы с Метрикой.
Почему в интерфейсе приложения нет полей для доступа к Метрике?
В личном кабинете Яндекс.OAuth при создании или редактировании приложения вы видите только базовые настройки (название, иконка, redirect URI). Поля для выбора сервисов (Метрика, Директ, Почта и др.) отсутствуют. Это нормально: в современной версии платформы все права доступа задаются исключительно через параметр scope в запросе на получение токена. Интерфейс не хранит список разрешённых сервисов - приложение получает права динамически.
Как правильно передать scope для Метрики?
Чтобы токен имел доступ к API Яндекс Метрики, при запросе авторизации (GET на https://oauth.yandex.ru/authorize) обязательно укажите параметр scope со значением metrika:read (для чтения) или metrika:write (для записи). Пример запроса:
https://oauth.yandex.ru/authorize?response_type=token&client_id=ВАШ_CLIENT_ID&scope=metrika:readЕсли вы используете OAuth с получением кода (authorization code flow), параметр scope нужно передавать на этапе получения кода. После обмена кода на токен, в ответе придёт access_token с правами только на Метрику.
Что делать, если после передачи scope всё равно приходит 403?
Ошибка 403 при GET-запросе к API Метрики может возникать по нескольким причинам:
- Неверный scope. Убедитесь, что вы передали
metrika:readилиmetrika:writeбез лишних пробелов. Не путайте сmetrika:readиmetrika:write- регистр важен. - Токен получен без scope. Если вы получили токен без указания
scope, он будет иметь только базовые права (например, доступ к информации о пользователе). Такой токен не подходит для Метрики. - Приложение не имеет доступа к счётчику. Даже с правильным токеном, пользователь, от имени которого получен токен, должен быть добавлен в список доступов к счётчику в интерфейсе Метрики (Настройки → Доступ).
Как проверить, какие права у токена?
Отправьте GET-запрос на https://login.yandex.ru/info?format=json с заголовком Authorization: OAuth ВАШ_ТОКЕН. В ответе будет поле scopes, которое содержит список прав. Если там нет metrika:read - токен невалиден для Метрики.
Пример правильного получения токена через GET-запрос
Если вы используете implicit flow (получение токена в URL), откройте в браузере:
https://oauth.yandex.ru/authorize?response_type=token&client_id=1234567890&scope=metrika:readПосле подтверждения доступа, токен появится в адресной строке (часть после #access_token=). Используйте его для запросов к https://api-metrika.yandex.net/management/v1/counter.
Заключение
Указать доступы для Яндекс Метрики в приложении можно только через параметр scope при запросе токена. Интерфейс Яндекс.OAuth не предоставляет визуальных полей для выбора сервисов. Если после получения токена вы получаете 403, проверьте правильность scope, наличие пользователя в доступах счётчика и сам токен. Следуя этим рекомендациям, вы сможете успешно подключить API Метрики к своему приложению.