Добавьте кнопку «Войти через Google» на свой сайт, чтобы пользователи могли зарегистрироваться или войти в ваше веб-приложение. Используйте HTML или JavaScript для визуализации кнопки и атрибутов, чтобы настроить форму, размер, текст и тему кнопки.

После того как пользователь выбирает учетную запись Google и дает свое согласие, Google делится профилем пользователя с помощью веб-токена JSON (JWT). Обзор шагов, выполняемых во время входа в систему и взаимодействия с пользователем, см. в разделе «Как это работает» . Понимание персонализированной кнопки позволяет просмотреть различные условия и состояния, влияющие на то, как кнопка отображается пользователям.
Предварительные условия
Выполните действия, описанные в разделе «Настройка» , чтобы настроить экран согласия OAuth, получить идентификатор клиента и загрузить клиентскую библиотеку.
Рендеринг кнопок
Чтобы отобразить кнопку «Войти через Google», вы можете выбрать HTML или JavaScript для отображения кнопки на странице входа:
HTML
Отобразите кнопку входа в систему с помощью HTML, возвращая JWT в конечную точку входа на вашу платформу.
<html>
  <body>
    <script src="https://accounts.google.com/gsi/client" async></script>
    <div id="g_id_onload"
        data-client_id="YOUR_GOOGLE_CLIENT_ID"
        data-login_uri="https://your.domain/your_login_endpoint"
        data-auto_prompt="false">
    </div>
    <div class="g_id_signin"
        data-type="standard"
        data-size="large"
        data-theme="outline"
        data-text="sign_in_with"
        data-shape="rectangular"
        data-logo_alignment="left">
    </div>
  <body>
</html>
 Элемент с классом g_id_signin отображается как кнопка «Войти через Google». Кнопка настраивается с помощью параметров, указанных в атрибутах данных.
 Чтобы отобразить кнопку «Войти с помощью Google» и кнопку Google One Tap на одной странице, удалите data-auto_prompt="false" . Это рекомендуется для уменьшения проблем и повышения скорости входа в систему.
 Полный список атрибутов данных см. на справочной странице g_id_signin
JavaScript
Отобразите кнопку входа с помощью JavaScript, вернув JWT обработчику обратного вызова JavaScript браузера.
<html>
  <body>
    <script src="https://accounts.google.com/gsi/client" async></script>
    <script>
      function handleCredentialResponse(response) {
        console.log("Encoded JWT ID token: " + response.credential);
      }
      window.onload = function () {
        google.accounts.id.initialize({
          client_id: "YOUR_GOOGLE_CLIENT_ID"
          callback: handleCredentialResponse
        });
        google.accounts.id.renderButton(
          document.getElementById("buttonDiv"),
          { theme: "outline", size: "large" }  // customization attributes
        );
        google.accounts.id.prompt(); // also display the One Tap dialog
      }
    </script>
    <div id="buttonDiv"></div>
  </body>
</html>
 Элемент, указанный в качестве первого параметра renderButton отображается как кнопка «Войти через Google». В этом примере buttonDiv используется для отображения кнопки на странице. Кнопка настраивается с использованием атрибутов, указанных во втором параметре renderButton .
 Чтобы свести к минимуму неудобства для пользователя, вызывается google.accounts.id.prompt() для отображения One Tap в качестве второй альтернативы использованию кнопки для регистрации или входа.
 Библиотека ГИС анализирует HTML-документ на наличие элементов с атрибутом ID, установленным на g_id_onload , или атрибутами класса, содержащими g_id_signin . Если соответствующий элемент найден, кнопка отображается с использованием HTML, независимо от того, отображалась ли кнопка также в JavaScript. Чтобы избежать повторного отображения кнопки (возможно, с конфликтующими параметрами), не включайте элементы HTML, соответствующие этим именам, в свои HTML-страницы.
Язык кнопки
 Язык кнопок автоматически определяется языком браузера по умолчанию или предпочтениями пользователя сеанса Google. Вы также можете выбрать язык вручную, добавив параметр hl и код языка в директиву src при загрузке библиотеки и добавив необязательный data-locale или параметр locale data-locale в HTML или языковой стандарт в JavaScript. 
HTML
 В следующем фрагменте кода показано, как отобразить язык кнопки на французском языке, добавив параметр hl в URL-адрес клиентской библиотеки и установив для атрибута data-locale значение French:
<script src="https://accounts.google.com/gsi/client?hl=fr" async></script>
<div class="g_id_signin" data-locale="fr">
</div>
JavaScript
 В следующем фрагменте кода показано, как отобразить язык кнопки на французском языке, добавив параметр hl в URL-адрес клиентской библиотеки и вызвав метод google.accounts.id.renderButton с параметром locale , установленным на французский язык:
<script src="https://accounts.google.com/gsi/client?hl=fr" async></script>
<script>
  google.accounts.id.renderButton(
    document.getElementById("buttonDiv"),
    { locale: "fr" }
  );
</script>
Обработка учетных данных
После получения согласия пользователя Google возвращает учетные данные JSON Web Token (JWT), известные как токен идентификатора, либо в браузер пользователя, либо непосредственно в конечную точку входа, размещенную на вашей платформе.
Выбор способа получения JWT зависит от того, визуализируете ли вы кнопку с помощью HTML или JavaScript, а также от того, используется ли режим всплывающего окна или перенаправления.
Всплывающий режим
 При использовании popup режима пользовательского интерфейса процесс входа в систему выполняется во всплывающем окне. Обычно этот режим менее навязчив для пользователей и является режимом UX по умолчанию.
При рендеринге кнопки с использованием:
HTML
Вы можете установить либо:
-  data-callback, чтобы вернуть JWT вашему обработчику обратного вызова, или
-  data-login_uriдля Google, чтобы отправить JWT непосредственно на вашу конечную точку входа с помощью запроса POST .
 Если установлены оба значения, data-callback имеет приоритет над data-login_uri . Установка обоих значений может быть полезна при использовании обработчика обратного вызова для отладки.
JavaScript
 Вы должны указать callback , режим всплывающего окна не поддерживает перенаправления при отображении кнопки в JavaScript. Если установлено, login_uri игнорируется.
Дополнительную информацию о декодировании JWT в обработчике обратного вызова JS см. в разделе «Обработка возвращенного ответа на учетные данные» .
Режим перенаправления
 При использовании режима redirect пользовательского интерфейса процесс входа в систему выполняется с использованием полностраничного перенаправления браузера пользователя, а Google возвращает JWT непосредственно в конечную точку входа с помощью запроса POST . Обычно это более навязчивый метод для пользователей, но он считается наиболее безопасным методом входа.
При рендеринге кнопки с использованием:
-  HTML дополнительно устанавливает data-login_uriв URI вашей конечной точки входа.
-  JavaScript опционально устанавливает login_uriв URI вашей конечной точки входа.
Если вы не укажете значение, Google вернет JWT в URI текущей страницы.
URI конечной точки входа в систему
 Используйте HTTPS и абсолютный URI при настройке data-login_uri или login_uri . Например, https://example.com/path .
 HTTP разрешен только при использовании localhost во время разработки: http://localhost/path .
Полное описание требований и правил проверки Google см. в разделе «Использование безопасных источников JavaScript и URI перенаправления» .