Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OAuth2 Yandex

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 — так проект будет проще найти другим разработчикам. 🤘

About

OAuth 2.0 provider-клиент Yandex ID для league/oauth2-client.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Contributors

Languages