Як зробити авторизацію через Google OAuth у PHP
Авторизація через Google дозволяє користувачам заходити на сайт без створення акаунта. Це зручно, безпечно та легко реалізується за допомогою Google OAuth 2.0.
У цьому уроці ми пройдемо шлях від створення Client ID у Google Cloud до отримання даних користувача у PHP.
➡️ КРОК 1. Створення OAuth 2.0 Client ID
1. Перейдіть в Google Cloud Console: https://console.cloud.google.com/
2. Створіть або виберіть існуючий проект.
3. Відкрийте APIs & Services → OAuth consent screen.
4. Оберіть тип: External (для публічного сайту).
5. Заповніть основну інформацію: назву застосунку, логотип необов'язковий.
6. Додайте дозволи (scopes) — мінімально можна залишити базові.
7. Збережіть.
Тепер створюємо сам OAuth-клієнт:
1. Перейдіть у меню APIs & Services → Credentials.
2. Натисніть Create Credentials → OAuth client ID.
3. Оберіть тип: Web application.
4. В полі Authorized redirect URIs додайте URL, куди Google поверне користувача після авторизації.
Напр.:
https://example.com/google-callback.php
5. Збережіть та завантажте JSON-файл.
➡️ КРОК 2. Встановлення Google API Client для PHP
Потрібен Composer. Якщо він є — виконуємо:
composer require google/apiclient:^2.0
У вас з'явиться директорія vendor і файл autoload.php.➡️ КРОК 3. Створення кнопки "Увійти через Google"
Файл: login.php
<?php
require 'vendor/autoload.php';
$client = new Google_Client();
$client->setAuthConfig('client_secret.json'); // JSON-файл OAuth
$client->setRedirectUri('https://example.com/google-callback.php');
$client->addScope("email");
$client->addScope("profile");
$authUrl = $client->createAuthUrl();
?>
<a href="<?php echo htmlspecialchars($authUrl); ?>">Увійти через Google</a>➡️ КРОК 4. Обробка callback та отримання даних користувачаФайл: google-callback.php
<?php
require 'vendor/autoload.php';
$client = new Google_Client();
$client->setAuthConfig('client_secret.json');
$client->setRedirectUri('https://example.com/google-callback.php');
$client->addScope("email");
$client->addScope("profile");
if (!isset($_GET['code'])) {
echo "Помилка: Google не повернув код авторизації.";
exit;
}
// Отримуємо токен
$token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
$client->setAccessToken($token);
// Отримуємо сервіс для запиту інформації про користувача
$oauth2 = new Google_Service_Oauth2($client);
$user = $oauth2->userinfo->get();
// $user містить email, name, picture, id і т.д.
echo "<pre>";
print_r($user);
echo "</pre>";
// Тут ви можете створити сесію або акаунт у БД➡️ КРОК 5. Що повертає Google?Змінна `$user` зазвичай містить:
Array
(
[id] => 1234567890
[email] => example@gmail.com
[verified_email] => 1
[name] => John Doe
[given_name] => John
[family_name] => Doe
[picture] => https://lh3.googleusercontent.com/photo.jpg
[locale] => en
)Це все, що потрібно для створення акаунта на сайті або формування сесії.🎉 Готово!
Тепер ваш сайт має повноцінну авторизацію через Google OAuth.