Как настроить доступы Яндекс Метрики в приложении Яндекса

    Многие разработчики сталкиваются с проблемой: при создании приложения в Яндекс.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 Метрики к своему приложению.

    Часто задаваемые вопросы