yaleksandr89/oauth2-yandex

Yandex ID OAuth 2.0 provider client for league/oauth2-client.

Maintainers

Package info

github.com/yaleksandr89/oauth2-yandex

Forum

pkg:composer/yaleksandr89/oauth2-yandex

Transparency log

Fund package maintenance!

Other

Other

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-08-04 22:43 UTC

This package is auto-updated.

Last update: 2026-08-05 09:01:11 UTC


README

Source Code CI Codecov Latest Stable Version Total Downloads PHP League OAuth2 Client Software License

OAuth2 Yandex — Yandex ID provider client for league/oauth2-client

Выберите язык

Русский English Español 中文 Français Deutsch
Выбран English Español 中文 Français Deutsch

yaleksandr89/oauth2-yandex — provider-клиент Yandex ID для league/oauth2-client.

Пакет реализует OAuth 2.0 Authorization Code Flow, получение и обновление токенов, а также загрузку профиля пользователя через API Yandex ID.

Перед началом

Перед подключением пакета зарегистрируйте OAuth-приложение, настройте Redirect URI и выберите необходимые права:

Регистрация приложения в Яндекс OAuth

Установка

composer require yaleksandr89/oauth2-yandex

Конфигурация

<?php

use Yaleksandr\OAuth2\Client\Provider\Yandex;

$provider = new Yandex([
    'clientId' => 'fake-yandex-client-id',
    'clientSecret' => 'fake-yandex-client-secret',
    'redirectUri' => 'https://example.com/oauth/yandex/callback',
]);

Храните Client ID и Client Secret в конфигурации или переменных окружения. Не добавляйте Client Secret в репозиторий.

Использование

Полный нативный пример показывает redirect на Yandex, проверку state, PKCE, обработку callback, получение профиля, дополнительные параметры авторизации и обновление токена:

Нативное использование с league/oauth2-client

Symfony и KnpUOAuth2ClientBundle

Для Symfony пакет подключается как generic provider через knpuniversity/oauth2-client-bundle. Отдельная инструкция включает конфигурацию клиента, запуск авторизации, получение токена и профиля:

Интеграция с Symfony и KnpUOAuth2ClientBundle

Доступные методы

Подробный справочник описывает публичные методы Yandex, YandexResourceOwner, YandexAvatar, YandexPhone, а также enum-типы YandexSex и YandexAvatarSize:

Справочник публичного API

Размеры аватара

Размеры YandexAvatarSize соответствуют документации Yandex ID о данных пользователя.

PHP case Значение Yandex Размер
Size28 islands-small 28×28
Size34 islands-34 34×34
Size42 islands-middle 42×42
Size50 islands-50 50×50
Size56 islands-retina-small 56×56
Size68 islands-68 68×68
Size75 islands-75 75×75
Size84 islands-retina-middle 84×84
Size100 islands-retina-50 100×100
Size200 islands-200 200×200

islands-* — служебные значения размера, которые Yandex использует в URL CDN аватаров; PHP cases названы по фактическому размеру изображения.

Пример профиля

Показать структуру ответа Yandex ID

YandexResourceOwner::toArray() возвращает исходную структуру ответа. Ниже использованы вымышленные данные:

{
  "id": "100000000000000",
  "login": "ivan.petrov",
  "client_id": "0123456789abcdef0123456789abcdef",
  "display_name": "Иван Петров",
  "real_name": "Иван Петров",
  "first_name": "Иван",
  "last_name": "Петров",
  "sex": "male",
  "default_email": "ivan.petrov@example.com",
  "emails": ["ivan.petrov@example.com"],
  "birthday": "0000-12-23",
  "default_avatar_id": "12345/example-avatar-id",
  "is_avatar_empty": false,
  "default_phone": {
    "id": 12345678,
    "number": "+79001234567"
  },
  "psuid": "1.ABCdef.example-user-specific-id"
}

Состав ответа зависит от прав, выданных приложению. Дата рождения остаётся строкой и может содержать неизвестные компоненты, например 0000-12-23.

Если библиотека помогла решить задачу, поставьте звезду на GitHub — так проект будет проще найти другим разработчикам. 🤘