Добавьте кнопку «Войти через 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 или locale в 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 перенаправления» .