Реалізація авторизації через Google на сайті

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація авторизації через Google на сайті
Проста
від 1 робочого дня до 3 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Впровадження Google OAuth аутентифікації для веб-сайтів

Google OAuth 2.0 — один з найпоширеніших способів авторизації. Інтегрується через стандартний OAuth2-флоу або Google Identity Services (GIS) — новий JS SDK для кнопки «Sign in with Google».

Реєстрація OAuth-клієнта

  1. Google Cloud Console → APIs & ServicesCredentials
  2. Створити OAuth 2.0 Client ID типу Web application
  3. Додати Authorized redirect URIs: https://example.com/auth/google/callback
  4. Зберегти Client ID і Client Secret

Laravel Socialite

composer require laravel/socialite
// config/services.php
'google' => [
    'client_id'     => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect'      => env('GOOGLE_REDIRECT_URI'),
],
// routes/web.php
Route::get('/auth/google',          [GoogleAuthController::class, 'redirect']);
Route::get('/auth/google/callback', [GoogleAuthController::class, 'callback']);

class GoogleAuthController extends Controller
{
    public function redirect(): RedirectResponse
    {
        return Socialite::driver('google')
            ->scopes(['openid', 'profile', 'email'])
            ->redirect();
    }

    public function callback(): RedirectResponse
    {
        try {
            $googleUser = Socialite::driver('google')->user();
        } catch (\Exception $e) {
            return redirect('/login')->withErrors(['google' => 'Помилка авторизації Google']);
        }

        $user = User::updateOrCreate(
            ['google_id' => $googleUser->getId()],
            [
                'name'              => $googleUser->getName(),
                'email'             => $googleUser->getEmail(),
                'email_verified_at' => now(),
                'avatar'            => $googleUser->getAvatar(),
            ]
        );

        Auth::login($user, remember: true);
        return redirect()->intended('/dashboard');
    }
}

Пов'язування з існуючим аккаунтом

Якщо користувач уже зареєстрований з тим же email через пароль — вирішіть, як об'єднати аккаунти:

// Ищемо по google_id
$user = User::where('google_id', $googleUser->getId())->first();

// Якщо немає — ищемо по email (пов'язуємо існуючий аккаунт)
if (!$user) {
    $user = User::where('email', $googleUser->getEmail())->first();
    if ($user) {
        $user->update(['google_id' => $googleUser->getId()]);
    } else {
        $user = User::create([
            'google_id'         => $googleUser->getId(),
            'name'              => $googleUser->getName(),
            'email'             => $googleUser->getEmail(),
            'email_verified_at' => now(),
        ]);
    }
}

One Tap / Google Identity Services

Новий Google Identity Services SDK дозволяє показати One Tap popup без редиректу:

<script src="https://accounts.google.com/gsi/client" async defer></script>
<div id="g_id_onload"
     data-client_id="{{ config('services.google.client_id') }}"
     data-callback="handleGoogleResponse"
     data-auto_prompt="false">
</div>
<div class="g_id_signin" data-type="standard"></div>
// Верифікація id_token на сервері
use Google\Client as GoogleClient;

public function handleToken(Request $request): JsonResponse
{
    $client = new GoogleClient(['client_id' => config('services.google.client_id')]);
    $payload = $client->verifyIdToken($request->credential);

    if (!$payload) {
        return response()->json(['error' => 'Invalid token'], 401);
    }

    $user = User::updateOrCreate(
        ['google_id' => $payload['sub']],
        ['name' => $payload['name'], 'email' => $payload['email']]
    );

    Auth::login($user);
    return response()->json(['redirect' => '/dashboard']);
}

Терміни

Стандартний OAuth2-флоу через Socialite — 1–2 дні. З One Tap та пов'язуванням аккаунтів — 2–3 дні.