yaleksandr89 / oauth2-yandex
Yandex ID OAuth 2.0 provider client for league/oauth2-client.
Requires
- php: ^8.3
- league/oauth2-client: ^2.9
- psr/http-message: ^1.1 || ^2.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.9
- phpstan/phpstan: ^2.2
- phpunit/phpunit: ^12.5
- squizlabs/php_codesniffer: ^4.0
This package is auto-updated.
Last update: 2026-08-05 09:01:11 UTC
README
Выберите язык
| Русский | 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:
Размеры аватара
Размеры 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 — так проект будет проще найти другим разработчикам. 🤘
