Впровадження Яндекс ID аутентифікації для веб-сайтів
Яндекс ID — система авторизації Яндекса. Актуальна для російської аудиторії: у багатьох користувачів є Яндекс.Пошта, й вхід через неї знижує тертя при реєстрації. Реалізується через OAuth2 з підтримкою OpenID Connect.
Реєстрація додатка
- oauth.yandex.ru → Створити додаток
- Указати назву, тип — Веб-сервіси
- Додати Callback URI:
https://example.com/auth/yandex/callback - У розділі Доступи додати: Яндекс ID (адреса електронної пошти, ім'я користувача, аватар)
- Зберегти ClientID і Client secret
Laravel Socialite
composer require laravel/socialite socialiteproviders/yandex
// config/services.php
'yandex' => [
'client_id' => env('YANDEX_CLIENT_ID'),
'client_secret' => env('YANDEX_CLIENT_SECRET'),
'redirect' => env('YANDEX_REDIRECT_URI'),
],
class YandexAuthController extends Controller
{
public function redirect(): RedirectResponse
{
return Socialite::driver('yandex')->redirect();
}
public function callback(): RedirectResponse
{
try {
$yandexUser = Socialite::driver('yandex')->user();
} catch (\Exception $e) {
return redirect('/login')->withErrors(['yandex' => 'Помилка авторизації Яндекс']);
}
$user = User::updateOrCreate(
['yandex_id' => $yandexUser->getId()],
[
'name' => $yandexUser->getName(),
'email' => $yandexUser->getEmail(),
'email_verified_at' => now(),
'avatar' => $yandexUser->getAvatar(),
]
);
Auth::login($user, remember: true);
return redirect()->intended('/dashboard');
}
}
Отримання даних через API Яндекс ID
Крім OAuth callback, можна запитати дані через API напрямо:
$response = Http::withToken($accessToken)
->get('https://login.yandex.ru/info', ['format' => 'json']);
$data = $response->json();
// $data['id'] — унікальний ID
// $data['login'] — логін
// $data['default_email']— основний email
// $data['real_name'] — ім'я
// $data['display_name'] — відображаємо ім'я
Терміни
Стандартний OAuth2-флоу — 1–2 дні.







