WPForms: как реализовать авторизацию через Google OAuth в WordPress

Зачем нужна авторизация через Google OAuth в WPForms

Авторизация через Google OAuth упрощает вход пользователей на сайт, снижая необходимость создавать отдельный аккаунт и запоминать пароль. В связке с WPForms можно сделать форму регистрации/входа с OAuth, чтобы повысить конверсию и удобство пользователей.

Диагностика: подходит ли ваш сайт для интеграции OAuth

Проверьте, что:

  • Сайт работает на HTTPS — Google требует защищённое соединение для OAuth;
  • WPForms Pro установлен — понадобится для кастомизации форм и добавления пользовательского кода;
  • Вы имеете доступ к Google Cloud Console для создания OAuth приложения;
  • В WordPress нет конфликтов с плагинами, влияющими на авторизацию.

Пошаговое решение: настройка Google OAuth и интеграция с WPForms

1. Создайте проект и OAuth 2.0 client ID в Google Cloud Console

  1. Перейдите в Google Cloud Console.
  2. Создайте новый проект или выберите существующий.
  3. Перейдите в «Credentials» (Учётные данные) и нажмите «Create Credentials» - «OAuth client ID».
  4. Выберите «Web application».
  5. В разделе «Authorized redirect URIs» добавьте URL в формате: https://ваш_домен/wp-login.php?action=google_oauth_callback (позже код на WordPress обработает этот запрос).
  6. Сохраните client ID и client secret.

2. Подключите библиотеку Google API Client и создайте обработчик в functions.php

Добавьте в functions.php вашей темы или через плагин сниппетов следующий код для инициализации Google API и обработки OAuth:

require_once __DIR__ . '/vendor/autoload.php'; // подключите библиотеку Google API Client, установите через Composer

function wpforms_google_oauth_login() {
    if ( isset($_GET['action']) && $_GET['action'] === 'google_oauth_callback' ) {
        $client = new Google_Client();
        $client->setClientId('ВАШ_CLIENT_ID');
        $client->setClientSecret('ВАШ_CLIENT_SECRET');
        $client->setRedirectUri('https://ваш_домен/wp-login.php?action=google_oauth_callback');
        $client->addScope('email');
        $client->addScope('profile');

        if (!isset($_GET['code'])) {
            $auth_url = $client->createAuthUrl();
            wp_redirect($auth_url);
            exit;
        } else {
            $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
            if (isset($token['access_token'])) {
                $client->setAccessToken($token['access_token']);
                $oauth2 = new Google_Service_Oauth2($client);
                $userInfo = $oauth2->userinfo->get();

                // Логика регистрации/входа через WPForms
                $email = $userInfo->email;
                $user = get_user_by('email', $email);
                if (!$user) {
                    $user_id = wp_create_user($email, wp_generate_password(), $email);
                    $user = get_user_by('ID', $user_id);
                }
                wp_set_current_user($user->ID);
                wp_set_auth_cookie($user->ID);
                wp_redirect(home_url());
                exit;
            } else {
                wp_die('Ошибка аутентификации Google.');
            }
        }
    }
}
add_action('init', 'wpforms_google_oauth_login');

3. Добавьте кнопку входа через Google в форму WPForms

Используйте HTML-блок или HTML-поле в форме WPForms с кнопкой, ведущей на URL авторизации:

<a href="?action=google_oauth_callback" class="wpforms-google-login-button" style="display:inline-block;padding:10px 20px;background:#4285F4;color:#fff;border-radius:4px;text-decoration:none;">Войти через Google</a>

Можно стилизовать кнопку под ваш дизайн.

Проверка результата после внедрения

  • Перейдите на страницу с формой WPForms и нажмите кнопку «Войти через Google».
  • Должно открыться окно Google OAuth для выбора аккаунта.
  • После успешного входа пользователя автоматически зарегистрирует (если нет) и авторизует в WordPress.
  • Проверьте, что пользователь вошел: в админке в разделе пользователи появится новая запись с email Google.
  • Попробуйте открыть страницу в режиме инкогнито, чтобы проверить повторный вход.

Частые ошибки и способы их устранения

  • Ошибка: redirect_uri_mismatch
    Причина: URL перенаправления в Google Cloud Console не совпадает с реальным.
    Решение: Проверьте и исправьте Redirect URI в настройках OAuth, он должен совпадать с URL в коде (https://ваш_домен/wp-login.php?action=google_oauth_callback).
  • Не срабатывает wp_set_auth_cookie
    Причина: Конфликт с кешированием или неправильное время сервера.
    Решение: Очистите кеш, проверьте синхронизацию времени сервера.
  • Не подключена библиотека Google API Client
    Причина: Отсутствует composer autoload или ошибка пути.
    Решение: Установите Google API Client через Composer: composer require google/apiclient:^2.0, проверьте пути подключения.
  • Форма WPForms не отображает кнопку
    Причина: HTML-блок не добавлен или стили скрывают кнопку.
    Решение: Добавьте HTML-блок с кнопкой и проверьте CSS.

Практические советы по безопасности и производительности

  • Храните client secret вне публичного доступа, например, в wp-config.php или через безопасные переменные окружения.
  • Ограничьте scope Google OAuth только необходимыми (email, profile), чтобы уменьшить риски.
  • Добавьте nonce-проверки при обработке OAuth для защиты от CSRF.
  • Кэшируйте результаты запросов к Google API, чтобы снизить нагрузку.
  • Регулярно обновляйте библиотеку Google API Client, чтобы использовать последние исправления безопасности.

Сравнение вариантов реализации Google OAuth в WPForms

МетодПреимуществаНедостатки
Реализация через код и Google API ClientГибкость, полный контроль, интеграция с WPFormsНужны навыки PHP, настройка сложнее, требуется поддержка
Плагин сторонний (например, Nextend Social Login)Простая настройка, поддержка OAuth для нескольких сервисовМеньше контроля, возможны конфликты, ограничение кастомизации
WPForms не отправляет формы при использовании AJAX: причины и пошаговое решение
24.05.2026
WPForms и WooCommerce: как скрыть email пользователя в уведомлениях о заказах
30.06.2026
WPForms: как реализовать авторизацию через Google OAuth в WordPress
01.08.2026
WPForms и WooCommerce: автоматическая передача данных обязательных полей из формы в заказ
25.04.2026
WPForms: ограничение количества отправок формы одним пользователем в WordPress
16.05.2026