Впровадження VK ID аутентифікації для веб-сайтів
VK ID — унифікована система авторизації ВКонтакте, яка прийшла на заміну старому VK Connect. Актуальна для російськомовної аудиторії: VK залишається найбільшою соціальною мережею у Росії та СНГ. Підтримує OAuth2 та новий VK ID SDK з покращеним UX.
Створення додатка
- vk.com/dev → Мої додатки → Створити додаток
- Тип: Веб-сайт
- Указати адресу сайту й базовий домен
- Зберегти ID додатка і Защищённий ключ
- У налаштуваннях → Авторизація додати дозволені redirect URI
Laravel Socialite
composer require laravel/socialite socialiteproviders/vkontakte
// config/services.php
'vkontakte' => [
'client_id' => env('VK_CLIENT_ID'),
'client_secret' => env('VK_CLIENT_SECRET'),
'redirect' => env('VK_REDIRECT_URI'),
],
class VkAuthController extends Controller
{
public function redirect(): RedirectResponse
{
return Socialite::driver('vkontakte')->scopes(['email'])->redirect();
}
public function callback(): RedirectResponse
{
try {
$vkUser = Socialite::driver('vkontakte')->user();
} catch (\Exception $e) {
return redirect('/login')->withErrors(['vk' => 'Помилка авторизації VK']);
}
$user = User::updateOrCreate(
['vk_id' => $vkUser->getId()],
[
'name' => $vkUser->getName(),
'email' => $vkUser->getEmail() ?: null,
'avatar' => $vkUser->getAvatar(),
]
);
Auth::login($user, remember: true);
return redirect()->intended('/dashboard');
}
}
Особливості VK OAuth
Email доступний тільки з явним scope. Навіть з запитаним scope email VK передає його не через стандартний OAuth, а у параметрах callback-запиту. Socialite-провайдер обробляє це автоматично.
VK ID SDK (новий спосіб)
ВКонтакте випустив офіційний VK ID SDK для JavaScript з підтримкою One Tap:
<script src="https://unpkg.com/@vkid/sdk@latest/dist-cdn/index.js"></script>
<div id="vkid-container"></div>
Терміни
OAuth2-флоу через Socialite — 1–1.5 дня. З VK ID SDK та обробкою відсутнього email — 2–3 дні.







