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 не отправляет формы: причины и решения
19.04.2026
WPForms: создание динамических расчетных полей в формах WordPress
01.02.2026
WPForms и WooCommerce: автоматическая передача данных обязательных полей из формы в заказ
03.05.2026
Как добавить многоуровневую валидацию в WPForms для WordPress
16.02.2026
WPForms: как избежать повторной отправки формы при обновлении страницы в WordPress
28.04.2026