На этой справочной странице описан API атрибутов данных HTML для входа в систему с помощью Google. Вы можете использовать API для отображения приглашения «В одно касание» или кнопки «Войти через Google» на своих веб-страницах.
Элемент с идентификатором «g_id_onload»
Вы можете поместить атрибуты данных «Вход через Google» в любые видимые или невидимые элементы, такие как <div>
и <span>
. Единственное требование — чтобы для идентификатора элемента было установлено значение g_id_onload
. Не размещайте этот идентификатор на нескольких элементах.
Атрибуты данных
В следующей таблице перечислены атрибуты данных с их описаниями:
Атрибут | |
---|---|
data-client_id | Идентификатор клиента вашего приложения |
data-auto_prompt | Отображение Google One Tap. |
data-auto_select | Включает автоматический выбор в Google One Tap. |
data-login_uri | URL-адрес вашей конечной точки входа в систему |
data-callback | Имя функции обработчика токена идентификатора JavaScript. |
data-native_login_uri | URL-адрес конечной точки обработчика учетных данных вашего пароля. |
data-native_callback | Имя функции обработчика учетных данных пароля JavaScript |
data-native_id_param | Имя параметра для значения credential.id |
data-native_password_param | Имя параметра для значения credential.password |
data-cancel_on_tap_outside | Определяет, следует ли отменить приглашение, если пользователь щелкнет за пределами приглашения. |
data-prompt_parent_id | Идентификатор DOM элемента контейнера приглашения One Tap. |
data-skip_prompt_cookie | Пропускает одно касание, если указанный файл cookie имеет непустое значение. |
data-nonce | Случайная строка для токенов ID |
data-context | Заголовок и слова в подсказке One Tap |
data-moment_callback | Имя функции прослушивателя уведомлений о состоянии пользовательского интерфейса. |
data-state_cookie_domain | Если вам нужно вызвать One Tap в родительском домене и его поддоменах, передайте родительский домен этому атрибуту, чтобы использовался один общий файл cookie. |
data-ux_mode | UX-процесс кнопки «Войти через Google» |
data-allowed_parent_origin | Источники, которым разрешено встраивать промежуточный iframe. Если этот атрибут присутствует, One Tap запускается в промежуточном режиме iframe. |
data-intermediate_iframe_close_callback | Переопределяет промежуточное поведение iframe по умолчанию, когда пользователи вручную закрывают One Tap. |
data-itp_support | Включает обновленный интерфейс One Tap UX в браузерах ITP. |
data-login_hint | Пропустите выбор учетной записи, предоставив пользователю подсказку. |
data-hd | Ограничьте выбор учетной записи по домену. |
data-use_fedcm_for_prompt | Разрешите браузеру контролировать запросы пользователей на вход в систему и выступать посредником в процессе входа между вашим веб-сайтом и Google. |
data-enable_redirect_uri_validation | Включите поток перенаправления кнопок, соответствующий правилам проверки URI перенаправления . |
Типы атрибутов
Следующие разделы содержат подробную информацию о типе каждого атрибута и пример.
data-client_id
Этот атрибут представляет собой идентификатор клиента вашего приложения, который находится и создается в консоли Google Cloud. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Да | data-client_id="CLIENT_ID.apps.googleusercontent.com" |
данные-auto_prompt
Этот атрибут определяет, отображать одно касание или нет. Значение по умолчанию — true
. Google One Tap не отображается, если это значение false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-auto_prompt="true" |
данные-auto_select
Этот атрибут определяет, следует ли возвращать токен идентификатора автоматически, без какого-либо взаимодействия с пользователем, если ваше приложение было одобрено только одним сеансом Google. Значение по умолчанию — false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-auto_select="true" |
data-login_uri
Этот атрибут является URI вашей конечной точки входа.
Значение должно точно соответствовать одному из разрешенных URI перенаправления для клиента OAuth 2.0, который вы настроили в консоли API, и должно соответствовать нашим правилам проверки URI перенаправления .
Этот атрибут можно опустить, если текущая страница является вашей страницей входа в систему, и в этом случае учетные данные публикуются на этой странице по умолчанию.
Ответ с учетными данными токена идентификатора отправляется на вашу конечную точку входа в систему, когда не определена функция обратного вызова и пользователь нажимает кнопки «Войти через Google» или «Одно касание», или происходит автоматический вход.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необязательный | Пример |
---|---|---|
URL-адрес | По умолчанию используется URI текущей страницы или указанное вами значение. Игнорируется, если установлены data-ux_mode="popup" и data-callback . | data-login_uri="https://www.example.com/login" |
Ваша конечная точка входа должна обрабатывать запросы POST, содержащие ключ credential
со значением токена идентификатора в теле.
Ниже приведен пример запроса к вашей конечной точке входа:
POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
credential=ID_TOKEN
обратный вызов данных
Этот атрибут представляет собой имя функции JavaScript, которая обрабатывает возвращаемый токен идентификатора. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Требуется, если data-login_uri не установлен. | data-callback="handleToken" |
Можно использовать один из атрибутов data-login_uri
и data-callback
. Это зависит от следующих конфигураций компонентов и режима UX:
Атрибут
data-login_uri
необходим для режимаredirect
кнопки «Войти через Google», который игнорирует атрибутdata-callback
.Один из этих двух атрибутов должен быть установлен для режима Google One Tap и
popup
окна кнопки входа в Google. Если оба установлены, атрибутdata-callback
имеет более высокий приоритет.
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-native_login_uri
Этот атрибут представляет собой URL-адрес конечной точки обработчика учетных данных вашего пароля. Если вы установите атрибут data-native_login_uri
или атрибут data-native_callback
, библиотека JavaScript возвращается к собственному диспетчеру учетных данных при отсутствии сеанса Google. Вам не разрешено одновременно устанавливать атрибуты data-native_callback
и data-native_login_uri
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-login_uri="https://www.example.com/password_login" |
данные-native_callback
Этот атрибут представляет собой имя функции JavaScript, которая обрабатывает учетные данные пароля, возвращаемые собственным диспетчером учетных данных браузера. Если вы установите атрибут data-native_login_uri
или атрибут data-native_callback
, библиотека JavaScript возвращается к собственному диспетчеру учетных данных при отсутствии сеанса Google. Вам не разрешено одновременно устанавливать data-native_callback
и data-native_login_uri
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-native_callback="handlePasswordCredential" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-native_id_param
Когда вы отправляете учетные данные пароля в конечную точку обработчика учетных данных пароля, вы можете указать имя параметра для поля credential.id
. Имя по умолчанию — email
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
URL-адрес | Необязательный | data-native_id_param="user_id" |
данные-native_password_param
Когда вы отправляете учетные данные пароля в конечную точку обработчика учетных данных пароля, вы можете указать имя параметра для значения credential.password
. Имя по умолчанию — password
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
URL-адрес | Необязательный | data-native_password_param="pwd" |
данные-cancel_on_tap_outside
Этот атрибут определяет, следует ли отменить запрос One Tap, если пользователь щелкнет за пределами приглашения. Значение по умолчанию — true
. Чтобы отключить его, установите значение false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-cancel_on_tap_outside="false" |
данные-prompt_parent_id
Этот атрибут устанавливает идентификатор DOM элемента контейнера. Если он не установлен, в правом верхнем углу окна отображается подсказка One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-prompt_parent_id="parent_id" |
data-skip_prompt_cookie
Этот атрибут пропускает One Tap, если указанный файл cookie имеет непустое значение. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-skip_prompt_cookie="SID" |
данные-nonce
Этот атрибут представляет собой случайную строку, используемую токеном идентификатора для предотвращения атак повторного воспроизведения. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-nonce="biaqbm70g23" |
Длина nonce ограничена максимальным размером JWT, поддерживаемым вашей средой, а также ограничениями размера HTTP отдельного браузера и сервера.
контекст данных
Этот атрибут изменяет текст заголовка и сообщений, отображаемых в подсказке One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-context="use" |
В следующей таблице перечислены все доступные контексты и их описания:
Контекст | |
---|---|
signin | «Войти через Google» |
signup | «Зарегистрируйтесь через Google» |
use | «Использовать с Google» |
data-moment_callback
Этот атрибут является именем функции прослушивателя уведомлений о состоянии пользовательского интерфейса. Для получения дополнительной информации обратитесь к типу данных PromptMomentNotification
.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-moment_callback="logMomentNotification" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-state_cookie_domain
Если вам нужно отображать One Tap в родительском домене и его поддоменах, передайте родительский домен этому атрибуту, чтобы использовался один файл cookie с общим состоянием. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-state_cookie_domain="example.com" |
данные-ux_mode
Этот атрибут устанавливает поток пользовательского интерфейса, используемый кнопкой «Войти через Google». Значение по умолчанию — popup
. Этот атрибут не влияет на пользовательский интерфейс One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-ux_mode="redirect" |
В следующей таблице перечислены доступные режимы пользовательского интерфейса и их описания.
UX-режим | |
---|---|
popup | Выполняет процесс входа в систему во всплывающем окне. |
redirect | Выполняет процесс входа в систему путем полного перенаправления страницы. |
data-allowed_parent_origin
Источники, которым разрешено встраивать промежуточный iframe. One Tap работает в промежуточном режиме iframe, если этот атрибут присутствует. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
строка или массив строк | Необязательный | data-allowed_parent_origin="https://example.com" |
В следующей таблице перечислены поддерживаемые типы значений и их описания.
Типы значений | ||
---|---|---|
string | URI одного домена. | "https://example.com" |
string array | Список URI доменов, разделенных запятыми. | "https://news.example.com, https://local.example.com" |
Если значение атрибута data-allowed_parent_origin
недопустимо, инициализация One Tap промежуточного режима iframe завершится неудачей и остановится.
Префиксы подстановочных знаков также поддерживаются. Например, "https://*.example.com"
соответствует example.com
и его поддоменам на всех уровнях (например, news.example.com
, login.news.example.com
). Что следует учитывать при использовании подстановочных знаков:
- Строки шаблонов не могут состоять только из подстановочных знаков и домена верхнего уровня. Например,
https://*.com
иhttps://*.co.uk
недействительны; Как отмечалось выше,"https://*.example.com"
соответствуетexample.com
и его поддоменам. Вы также можете использовать список, разделенный запятыми, для обозначения двух разных доменов. Например,"https://example1.com,https://*.example2.com"
соответствует доменамexample1.com
,example2.com
и поддоменамexample2.com
- Домены с подстановочными знаками должны начинаться с безопасной схемы https://, поэтому
"*.example.com"
считается недействительным.
данные-intermediate_iframe_close_callback
Переопределяет промежуточное поведение iframe по умолчанию, когда пользователи вручную закрывают One Tap, нажав кнопку «X» в пользовательском интерфейсе One Tap. Поведение по умолчанию — немедленное удаление промежуточного iframe из DOM.
Поле data-intermediate_iframe_close_callback
вступает в силу только в промежуточном режиме iframe. И это влияет только на промежуточный iframe, а не на iframe One Tap. Пользовательский интерфейс One Tap удаляется до вызова обратного вызова.
Тип | Необходимый | Пример |
---|---|---|
функция | Необязательный | data-intermediate_iframe_close_callback="logBeforeClose" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-itp_support
Это поле определяет, следует ли включать обновленный интерфейс One Tap UX в браузерах, поддерживающих интеллектуальное предотвращение отслеживания (ITP). Значение по умолчанию — false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-itp_support="true" |
данные-login_hint
Если ваше приложение заранее знает, какой пользователь должен войти в систему, оно может предоставить Google подсказку для входа. В случае успеха выбор учетной записи пропускается. Допустимые значения: адрес электронной почты или подполе токена идентификатора.
Дополнительные сведения см. в документации OpenID Connect для login_hint
.
Тип | Необходимый | Пример |
---|---|---|
Нить. Это может быть адрес электронной почты или значение sub из токена идентификатора. | Необязательный | data-login_hint="elisa.beckett@gmail.com" |
данные-HD
Если у пользователя есть несколько учетных записей и ему необходимо войти в систему только со своей учетной записью Workspace, используйте это, чтобы предоставить Google подсказку по имени домена. В случае успеха учетные записи пользователей, отображаемые во время выбора учетной записи, ограничиваются предоставленным доменом. Подстановочное значение: *
предлагает пользователю только учетные записи Workspace и исключает потребительские учетные записи (user@gmail.com) при выборе учетной записи.
Дополнительные сведения см. в документации OpenID Connect для hd
.
Тип | Необходимый | Пример |
---|---|---|
Нить. Полное доменное имя или *. | Необязательный | data-hd="*" |
data-use_fedcm_for_prompt
Разрешите браузеру контролировать запросы пользователей на вход в систему и выступать посредником в процессе входа между вашим веб-сайтом и Google. По умолчанию ложь. Дополнительную информацию см. на странице «Миграция на FedCM» .
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-use_fedcm_for_prompt="true" |
data-enable_redirect_uri_validation
Включите поток перенаправления кнопок, соответствующий правилам проверки URI перенаправления .
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-enable_redirect_uri_validation="true" |
Элемент с классом «g_id_signin»
Если вы добавите g_id_signin
к атрибуту class
элемента, элемент будет отображаться как кнопка «Войти через Google».
Вы можете разместить несколько кнопок «Войти через Google» на одной странице. Каждая кнопка может иметь свои визуальные настройки. Настройки определяются следующими атрибутами данных.
Атрибуты визуальных данных
В следующей таблице перечислены атрибуты визуальных данных и их описания:
Атрибут | |
---|---|
data-type | Тип кнопки: иконка или стандартная кнопка. |
data-theme | Тема кнопки. Например, fill_blue или fill_black. |
data-size | Размер кнопки. Например, маленький или большой. |
data-text | Текст кнопки. Например, «Войти через Google» или «Зарегистрироваться через Google». |
data-shape | Форма кнопки. Например, прямоугольный или круглый. |
data-logo_alignment | Расположение логотипа Google: слева или по центру. |
data-width | Ширина кнопки в пикселях. |
data-locale | Текст кнопки отображается на языке, установленном в этом атрибуте. |
data-click_listener | Если установлено, эта функция вызывается при нажатии кнопки «Войти через Google». |
data-state | Если установлено, эта строка возвращается с токеном идентификатора. |
Типы атрибутов
Следующие разделы содержат подробную информацию о типе каждого атрибута и пример.
тип данных
Тип кнопки. Значение по умолчанию — standard
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Да | data-type="icon" |
В следующей таблице перечислены все доступные типы кнопок и их описания:
Тип | |
---|---|
standard | |
icon |
тема данных
Тема кнопки. Значение по умолчанию — outline
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-theme="filled_blue" |
В следующей таблице перечислены доступные темы и их описания:
Тема | |
---|---|
outline | |
filled_blue | |
filled_black |
размер данных
Размер кнопки. Значение по умолчанию large
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-size="small" |
В следующей таблице перечислены доступные размеры кнопок и их описания.
Размер | |
---|---|
large | |
medium | |
small |
текст данных
Текст кнопки. Значение по умолчанию — signin_with
. Визуальных отличий для текста кнопок со значками, имеющих разные атрибуты data-text
, нет. Единственное исключение — когда текст читается для доступности экрана.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-text="signup_with" |
В следующей таблице перечислены доступные тексты кнопок и их описания:
Текст | |
---|---|
signin_with | |
signup_with | |
continue_with | |
signin |
форма данных
Форма кнопки. Значение по умолчанию — rectangular
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-shape="rectangular" |
В следующей таблице перечислены доступные формы кнопок и их описания:
Форма | |
---|---|
rectangular | |
pill | |
circle | |
square |
data-logo_alignment
Расположение логотипа Google. Значение по умолчанию left
. Этот атрибут применяется только к кнопкам standard
типа. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-logo_alignment="center" |
В следующей таблице перечислены доступные выравнивания и их описания:
logo_alignment | |
---|---|
left | |
center |
ширина данных
Минимальная ширина кнопки в пикселях. Максимальная доступная ширина — 400 пикселей.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-width=400 |
локаль данных
Необязательный. Отобразить текст кнопки с использованием указанного языкового стандарта, в противном случае по умолчанию используются настройки учетной записи Google или браузера пользователя. Добавьте параметр hl
и код языка в директиву src при загрузке библиотеки, например: gsi/client?hl=<iso-639-code>
.
Если он не установлен, используется языковой стандарт браузера по умолчанию или предпочтения пользователя сеанса Google. Таким образом, разные пользователи могут видеть разные версии локализованных кнопок и, возможно, разных размеров.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-locale="zh_CN" |
data-click_listener
Вы можете определить функцию JavaScript, которая будет вызываться при нажатии кнопки «Войти через Google», используя атрибут data-click_listener
.
<script> function onClickHandler(){ console.log("Sign in with Google button clicked...") } </script> ..... <div class="g_id_signin" data-size="large" data-theme="outline" data-click_listener="onClickHandler"> </div>
В этом примере сообщение «Войти с помощью кнопки Google нажата...» регистрируется на консоли при нажатии кнопки «Войти с помощью Google».
состояние данных
Необязательно: поскольку на одной странице может отображаться несколько кнопок «Войти с помощью Google», вы можете назначить каждой кнопке уникальную строку. Та же строка будет возвращена вместе с токеном идентификатора, поэтому вы можете определить, какую кнопку пользователь нажал для входа.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-state="button 1" |
Серверная интеграция
Конечные точки на стороне сервера должны обрабатывать следующие запросы HTTP POST
.
Конечная точка обработчика токена идентификатора
Конечная точка обработчика токена идентификатора обрабатывает токен идентификатора. В зависимости от статуса соответствующей учетной записи вы можете войти в систему и либо направить его на страницу регистрации, либо направить на страницу привязки учетной записи для получения дополнительной информации.
HTTP-запрос POST
содержит следующую информацию:
Формат | Имя | Описание |
---|---|---|
печенье | g_csrf_token | Случайная строка, которая меняется при каждом запросе к конечной точке обработчика. |
Параметр запроса | g_csrf_token | Строка, аналогичная предыдущему значению файла cookie, g_csrf_token . |
Параметр запроса | credential | Токен идентификатора, который выдает Google. |
Параметр запроса | select_by | Как выбираются удостоверения. |
Параметр запроса | state | Этот параметр определяется только тогда, когда пользователь нажимает кнопку «Войти через Google», чтобы войти в систему, и указан атрибут state кнопки. |
полномочия
В декодированном виде токен идентификатора выглядит следующим образом:
header { "alg": "RS256", "kid": "f05415b13acb9590f70df862765c655f5a7a019e", // JWT signature "typ": "JWT" } payload { "iss": "https://accounts.google.com", // The JWT's issuer "nbf": 161803398874, "aud": "314159265-pi.apps.googleusercontent.com", // Your server's client ID "sub": "3141592653589793238", // The unique ID of the user's Google Account "hd": "gmail.com", // If present, the host domain of the user's GSuite email address "email": "elisa.g.beckett@gmail.com", // The user's email address "email_verified": true, // true, if Google has verified the email address "azp": "314159265-pi.apps.googleusercontent.com", "name": "Elisa Beckett", // If present, a URL to user's profile picture "picture": "https://lh3.googleusercontent.com/a-/e2718281828459045235360uler", "given_name": "Eliza", "family_name": "Beckett", "iat": 1596474000, // Unix timestamp of the assertion's creation time "exp": 1596477600, // Unix timestamp of the assertion's expiration time "jti": "abc161803398874def" }
sub
представляет собой глобальный уникальный идентификатор учетной записи Google. Используйте sub
только в качестве идентификатора пользователя, поскольку оно уникально среди всех учетных записей Google и никогда не используется повторно. Не используйте адрес электронной почты в качестве идентификатора, поскольку у учетной записи Google может быть несколько адресов электронной почты в разные моменты времени.
Используя поля email
, email_verified
и hd
вы можете определить, является ли Google хостингом и является ли он авторитетным для адреса электронной почты. В тех случаях, когда Google является авторитетным, подтверждается, что пользователь является законным владельцем учетной записи.
Случаи, когда Google авторитетен:
-
email
имеет суффикс@gmail.com
, это учетная запись Gmail. -
email_verified
имеет значение true и установленhd
, это учетная запись Google Workspace.
Пользователи могут регистрировать учетные записи Google без использования Gmail или Google Workspace. Если email
не содержит суффикса @gmail.com
и hd
отсутствует, Google не является авторитетным, и для проверки пользователя рекомендуется использовать пароль или другие методы запроса. email_verified
также может иметь значение true, поскольку Google изначально подтвердил пользователя при создании учетной записи Google, однако с тех пор право собственности на стороннюю учетную запись электронной почты могло измениться.
Поле exp
показывает срок действия токена, необходимый для проверки его на стороне вашего сервера . Для токена идентификатора, полученного при входе через Google, требуется один час. Вам необходимо проверить токен до истечения срока его действия. Не используйте exp
для управления сеансами. Токен идентификатора с истекшим сроком действия не означает, что пользователь вышел из системы. Ваше приложение отвечает за управление сеансами ваших пользователей.
select_by
В следующей таблице перечислены возможные значения поля select_by
. Тип кнопки, используемый вместе с состоянием сеанса и согласия, используется для установки значения.
Пользователь нажал кнопку «В одно касание» или «Войти через Google» или использовал бесконтактный автоматический процесс входа.
Был найден существующий сеанс, или пользователь выбрал и вошел в учетную запись Google, чтобы установить новый сеанс.
Прежде чем передать учетные данные токена идентификатора вашему приложению, пользователь либо
- нажали кнопку «Подтвердить», чтобы дать согласие на передачу учетных данных, или
- ранее предоставил согласие и использовал функцию «Выбрать учетную запись», чтобы выбрать учетную запись Google.
Значение этого поля установлено в один из этих типов:
Ценить | Описание |
---|---|
auto | Автоматический вход пользователя с существующим сеансом, который ранее предоставил согласие на обмен учетными данными. Применяется только к браузерам, не поддерживающим FedCM. |
user | Пользователь с существующим сеансом, который ранее предоставил согласие, нажал кнопку «Продолжить как» в одно касание, чтобы поделиться учетными данными. Применяется только к браузерам, не поддерживающим FedCM. |
fedcm | Пользователь нажал кнопку «Продолжить как» в одно касание, чтобы поделиться учетными данными с помощью FedCM. Применяется только к браузерам, поддерживаемым FedCM. |
fedcm_auto | Автоматический вход пользователя с существующим сеансом, который ранее предоставил согласие на передачу учетных данных с помощью FedCM One Tap. Применяется только к браузерам, поддерживаемым FedCM. |
user_1tap | Пользователь с существующим сеансом нажал кнопку «Продолжить как» в одно касание, чтобы дать согласие и поделиться учетными данными. Применяется только к Chrome v75 и выше. |
user_2tap | Пользователь без существующего сеанса нажал кнопку «Продолжить как» в одно касание, чтобы выбрать учетную запись, а затем нажал кнопку «Подтвердить» во всплывающем окне, чтобы дать согласие и поделиться учетными данными. Применяется к браузерам, не основанным на Chromium. |
btn | Пользователь с существующим сеансом, который ранее предоставил согласие, нажал кнопку «Войти с помощью Google» и выбрал учетную запись Google в разделе «Выбрать учетную запись», чтобы поделиться учетными данными. |
btn_confirm | Пользователь с существующим сеансом нажал кнопку «Войти с помощью Google» и нажал кнопку «Подтвердить», чтобы дать согласие и поделиться учетными данными. |
btn_add_session | Пользователь без существующего сеанса, который ранее предоставил согласие, нажал кнопку «Войти через Google», чтобы выбрать учетную запись Google и поделиться учетными данными. |
btn_confirm_add_session | Пользователь без существующего сеанса сначала нажал кнопку «Войти через Google», чтобы выбрать учетную запись Google, а затем нажал кнопку «Подтвердить», чтобы дать согласие и поделиться учетными данными. |
состояние
Этот параметр определяется только тогда, когда пользователь нажимает кнопку «Войти через Google», чтобы войти в систему, и указывается атрибут data-state
нажатой кнопки. Значение этого поля — то же значение, которое вы указали в атрибуте data-state
кнопки.
Поскольку на одной странице может отображаться несколько кнопок «Войти с помощью Google», вы можете назначить каждой кнопке уникальную строку. Следовательно, вы можете использовать этот параметр state
, чтобы определить, какую кнопку нажал пользователь для входа в систему.
Конечная точка обработчика учетных данных пароля
Конечная точка обработчика учетных данных пароля обрабатывает учетные данные пароля, которые получает собственный диспетчер учетных данных.
HTTP-запрос POST
содержит следующую информацию:
Формат | Имя | Описание |
---|---|---|
печенье | g_csrf_token | Случайная строка, которая меняется при каждом запросе к конечной точке обработчика. |
Параметр запроса | g_csrf_token | Строка, аналогичная предыдущему значению файла cookie, g_csrf_token . |
Параметр запроса | email | Это токен идентификатора, который выдает Google. |
Параметр запроса | password | Как выбираются удостоверения. |
На этой справочной странице описан API атрибутов данных HTML для входа в систему с помощью Google. Вы можете использовать API для отображения приглашения «В одно касание» или кнопки «Войти через Google» на своих веб-страницах.
Элемент с идентификатором «g_id_onload»
Вы можете поместить атрибуты данных «Вход через Google» в любые видимые или невидимые элементы, такие как <div>
и <span>
. Единственное требование — чтобы для идентификатора элемента было установлено значение g_id_onload
. Не размещайте этот идентификатор на нескольких элементах.
Атрибуты данных
В следующей таблице перечислены атрибуты данных с их описаниями:
Атрибут | |
---|---|
data-client_id | Идентификатор клиента вашего приложения |
data-auto_prompt | Отображение Google One Tap. |
data-auto_select | Включает автоматический выбор в Google One Tap. |
data-login_uri | URL-адрес вашей конечной точки входа в систему |
data-callback | Имя функции обработчика токена идентификатора JavaScript. |
data-native_login_uri | URL-адрес конечной точки обработчика учетных данных вашего пароля. |
data-native_callback | Имя функции обработчика учетных данных пароля JavaScript |
data-native_id_param | Имя параметра для значения credential.id |
data-native_password_param | Имя параметра для значения credential.password |
data-cancel_on_tap_outside | Определяет, следует ли отменить приглашение, если пользователь щелкнет за пределами приглашения. |
data-prompt_parent_id | Идентификатор DOM элемента контейнера приглашения One Tap. |
data-skip_prompt_cookie | Пропускает одно касание, если указанный файл cookie имеет непустое значение. |
data-nonce | Случайная строка для токенов ID |
data-context | Заголовок и слова в подсказке One Tap |
data-moment_callback | Имя функции прослушивателя уведомлений о состоянии пользовательского интерфейса. |
data-state_cookie_domain | Если вам нужно вызвать One Tap в родительском домене и его поддоменах, передайте родительский домен этому атрибуту, чтобы использовался один общий файл cookie. |
data-ux_mode | UX-процесс кнопки «Войти через Google» |
data-allowed_parent_origin | Источники, которым разрешено встраивать промежуточный iframe. Если этот атрибут присутствует, One Tap запускается в промежуточном режиме iframe. |
data-intermediate_iframe_close_callback | Переопределяет промежуточное поведение iframe по умолчанию, когда пользователи вручную закрывают One Tap. |
data-itp_support | Включает обновленный интерфейс One Tap UX в браузерах ITP. |
data-login_hint | Пропустите выбор учетной записи, предоставив пользователю подсказку. |
data-hd | Ограничьте выбор учетной записи по домену. |
data-use_fedcm_for_prompt | Разрешите браузеру контролировать запросы пользователей на вход в систему и выступать посредником в процессе входа между вашим веб-сайтом и Google. |
data-enable_redirect_uri_validation | Включите поток перенаправления кнопок, соответствующий правилам проверки URI перенаправления . |
Типы атрибутов
Следующие разделы содержат подробную информацию о типе каждого атрибута и пример.
data-client_id
Этот атрибут представляет собой идентификатор клиента вашего приложения, который находится и создается в консоли Google Cloud. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Да | data-client_id="CLIENT_ID.apps.googleusercontent.com" |
данные-auto_prompt
Этот атрибут определяет, отображать одно касание или нет. Значение по умолчанию — true
. Google One Tap не отображается, если это значение false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-auto_prompt="true" |
данные-auto_select
Этот атрибут определяет, следует ли возвращать токен идентификатора автоматически, без какого-либо взаимодействия с пользователем, если ваше приложение было одобрено только одним сеансом Google. Значение по умолчанию — false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-auto_select="true" |
data-login_uri
Этот атрибут является URI вашей конечной точки входа.
Значение должно точно соответствовать одному из разрешенных URI перенаправления для клиента OAuth 2.0, который вы настроили в консоли API, и должно соответствовать нашим правилам проверки URI перенаправления .
Этот атрибут можно опустить, если текущая страница является вашей страницей входа в систему, и в этом случае учетные данные публикуются на этой странице по умолчанию.
Ответ с учетными данными токена идентификатора отправляется на вашу конечную точку входа в систему, когда не определена функция обратного вызова и пользователь нажимает кнопки «Войти через Google» или «Одно касание», или происходит автоматический вход.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необязательный | Пример |
---|---|---|
URL-адрес | По умолчанию используется URI текущей страницы или указанное вами значение. Игнорируется, если установлены data-ux_mode="popup" и data-callback . | data-login_uri="https://www.example.com/login" |
Ваша конечная точка входа должна обрабатывать запросы POST, содержащие ключ credential
со значением токена идентификатора в теле.
Ниже приведен пример запроса к вашей конечной точке входа:
POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
credential=ID_TOKEN
обратный вызов данных
Этот атрибут представляет собой имя функции JavaScript, которая обрабатывает возвращаемый токен идентификатора. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Требуется, если data-login_uri не установлен. | data-callback="handleToken" |
Можно использовать один из атрибутов data-login_uri
и data-callback
. Это зависит от следующих конфигураций компонентов и режима UX:
Атрибут
data-login_uri
необходим для режимаredirect
кнопки «Войти через Google», который игнорирует атрибутdata-callback
.Один из этих двух атрибутов должен быть установлен для режима Google One Tap и
popup
окна кнопки входа в Google. Если оба установлены, атрибутdata-callback
имеет более высокий приоритет.
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-native_login_uri
Этот атрибут представляет собой URL-адрес конечной точки обработчика учетных данных вашего пароля. Если вы установите атрибут data-native_login_uri
или атрибут data-native_callback
, библиотека JavaScript возвращается к собственному диспетчеру учетных данных при отсутствии сеанса Google. Вам не разрешено одновременно устанавливать атрибуты data-native_callback
и data-native_login_uri
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-login_uri="https://www.example.com/password_login" |
данные-native_callback
Этот атрибут представляет собой имя функции JavaScript, которая обрабатывает учетные данные пароля, возвращаемые собственным диспетчером учетных данных браузера. Если вы установите атрибут data-native_login_uri
или атрибут data-native_callback
, библиотека JavaScript возвращается к собственному диспетчеру учетных данных при отсутствии сеанса Google. Вам не разрешено одновременно устанавливать data-native_callback
и data-native_login_uri
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-native_callback="handlePasswordCredential" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-native_id_param
Когда вы отправляете учетные данные пароля в конечную точку обработчика учетных данных пароля, вы можете указать имя параметра для поля credential.id
. Имя по умолчанию — email
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
URL-адрес | Необязательный | data-native_id_param="user_id" |
данные-native_password_param
Когда вы отправляете учетные данные пароля в конечную точку обработчика учетных данных пароля, вы можете указать имя параметра для значения credential.password
. Имя по умолчанию — password
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
URL-адрес | Необязательный | data-native_password_param="pwd" |
данные-cancel_on_tap_outside
Этот атрибут определяет, следует ли отменить запрос One Tap, если пользователь щелкнет за пределами приглашения. Значение по умолчанию — true
. Чтобы отключить его, установите значение false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-cancel_on_tap_outside="false" |
данные-prompt_parent_id
Этот атрибут устанавливает идентификатор DOM элемента контейнера. Если он не установлен, в правом верхнем углу окна отображается подсказка One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-prompt_parent_id="parent_id" |
data-skip_prompt_cookie
Этот атрибут пропускает One Tap, если указанный файл cookie имеет непустое значение. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-skip_prompt_cookie="SID" |
данные-nonce
Этот атрибут представляет собой случайную строку, используемую токеном идентификатора для предотвращения атак повторного воспроизведения. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-nonce="biaqbm70g23" |
Длина nonce ограничена максимальным размером JWT, поддерживаемым вашей средой, а также ограничениями размера HTTP отдельного браузера и сервера.
контекст данных
Этот атрибут изменяет текст заголовка и сообщений, отображаемых в подсказке One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-context="use" |
В следующей таблице перечислены все доступные контексты и их описания:
Контекст | |
---|---|
signin | «Войти через Google» |
signup | «Зарегистрируйтесь через Google» |
use | «Использовать с Google» |
data-moment_callback
Этот атрибут является именем функции прослушивателя уведомлений о состоянии пользовательского интерфейса. Для получения дополнительной информации обратитесь к типу данных PromptMomentNotification
.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-moment_callback="logMomentNotification" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-state_cookie_domain
Если вам нужно отображать One Tap в родительском домене и его поддоменах, передайте родительский домен этому атрибуту, чтобы использовался один файл cookie с общим состоянием. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-state_cookie_domain="example.com" |
данные-ux_mode
Этот атрибут устанавливает поток пользовательского интерфейса, используемый кнопкой «Войти через Google». Значение по умолчанию — popup
. Этот атрибут не влияет на пользовательский интерфейс One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-ux_mode="redirect" |
В следующей таблице перечислены доступные режимы пользовательского интерфейса и их описания.
UX-режим | |
---|---|
popup | Выполняет процесс входа в систему во всплывающем окне. |
redirect | Выполняет процесс входа в систему путем полного перенаправления страницы. |
data-allowed_parent_origin
Источники, которым разрешено встраивать промежуточный iframe. One Tap работает в промежуточном режиме iframe, если этот атрибут присутствует. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
строка или массив строк | Необязательный | data-allowed_parent_origin="https://example.com" |
В следующей таблице перечислены поддерживаемые типы значений и их описания.
Типы значений | ||
---|---|---|
string | URI одного домена. | "https://example.com" |
string array | Список URI доменов, разделенных запятыми. | "https://news.example.com, https://local.example.com" |
Если значение атрибута data-allowed_parent_origin
недопустимо, инициализация One Tap промежуточного режима iframe завершится неудачей и остановится.
Префиксы подстановочных знаков также поддерживаются. Например, "https://*.example.com"
соответствует example.com
и его поддоменам на всех уровнях (например, news.example.com
, login.news.example.com
). Что следует учитывать при использовании подстановочных знаков:
- Строки шаблонов не могут состоять только из подстановочных знаков и домена верхнего уровня. Например,
https://*.com
иhttps://*.co.uk
недействительны; Как отмечалось выше,"https://*.example.com"
соответствуетexample.com
и его поддоменам. Вы также можете использовать список, разделенный запятыми, для обозначения двух разных доменов. Например,"https://example1.com,https://*.example2.com"
соответствует доменамexample1.com
,example2.com
и поддоменамexample2.com
- Домены с подстановочными знаками должны начинаться с безопасной схемы https://, поэтому
"*.example.com"
считается недействительным.
данные-intermediate_iframe_close_callback
Переопределяет промежуточное поведение iframe по умолчанию, когда пользователи вручную закрывают One Tap, нажав кнопку «X» в пользовательском интерфейсе One Tap. Поведение по умолчанию — немедленное удаление промежуточного iframe из DOM.
Поле data-intermediate_iframe_close_callback
вступает в силу только в промежуточном режиме iframe. И это влияет только на промежуточный iframe, а не на iframe One Tap. Пользовательский интерфейс One Tap удаляется до вызова обратного вызова.
Тип | Необходимый | Пример |
---|---|---|
функция | Необязательный | data-intermediate_iframe_close_callback="logBeforeClose" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-itp_support
Это поле определяет, следует ли включать обновленный интерфейс One Tap UX в браузерах, поддерживающих интеллектуальное предотвращение отслеживания (ITP). Значение по умолчанию — false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-itp_support="true" |
данные-login_hint
Если ваше приложение заранее знает, какой пользователь должен войти в систему, оно может предоставить Google подсказку для входа. В случае успеха выбор учетной записи пропускается. Допустимые значения: адрес электронной почты или подполе токена идентификатора.
Дополнительные сведения см. в документации OpenID Connect для login_hint
.
Тип | Необходимый | Пример |
---|---|---|
Нить. Это может быть адрес электронной почты или значение sub из токена идентификатора. | Необязательный | data-login_hint="elisa.beckett@gmail.com" |
данные-HD
Если у пользователя есть несколько учетных записей и ему необходимо войти в систему только со своей учетной записью Workspace, используйте это, чтобы предоставить Google подсказку по имени домена. В случае успеха учетные записи пользователей, отображаемые во время выбора учетной записи, ограничиваются предоставленным доменом. Подстановочное значение: *
предлагает пользователю только учетные записи Workspace и исключает потребительские учетные записи (user@gmail.com) при выборе учетной записи.
Дополнительные сведения см. в документации OpenID Connect для hd
.
Тип | Необходимый | Пример |
---|---|---|
Нить. Полное доменное имя или *. | Необязательный | data-hd="*" |
data-use_fedcm_for_prompt
Разрешите браузеру контролировать запросы пользователей на вход в систему и выступать посредником в процессе входа между вашим веб-сайтом и Google. По умолчанию ложь. Дополнительную информацию см. на странице «Миграция на FedCM» .
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-use_fedcm_for_prompt="true" |
data-enable_redirect_uri_validation
Включите поток перенаправления кнопок, соответствующий правилам проверки URI перенаправления .
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-enable_redirect_uri_validation="true" |
Элемент с классом «g_id_signin»
Если вы добавите g_id_signin
к атрибуту class
элемента, элемент будет отображаться как кнопка «Войти через Google».
Вы можете разместить несколько кнопок «Войти через Google» на одной странице. Каждая кнопка может иметь свои визуальные настройки. Настройки определяются следующими атрибутами данных.
Атрибуты визуальных данных
В следующей таблице перечислены атрибуты визуальных данных и их описания:
Атрибут | |
---|---|
data-type | Тип кнопки: иконка или стандартная кнопка. |
data-theme | Тема кнопки. Например, fill_blue или fill_black. |
data-size | Размер кнопки. Например, маленький или большой. |
data-text | Текст кнопки. Например, «Войти через Google» или «Зарегистрироваться через Google». |
data-shape | Форма кнопки. Например, прямоугольный или круглый. |
data-logo_alignment | Расположение логотипа Google: слева или по центру. |
data-width | Ширина кнопки в пикселях. |
data-locale | Текст кнопки отображается на языке, установленном в этом атрибуте. |
data-click_listener | Если установлено, эта функция вызывается при нажатии кнопки «Войти через Google». |
data-state | Если установлено, эта строка возвращается с токеном идентификатора. |
Типы атрибутов
Следующие разделы содержат подробную информацию о типе каждого атрибута и пример.
тип данных
Тип кнопки. Значение по умолчанию — standard
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Да | data-type="icon" |
В следующей таблице перечислены все доступные типы кнопок и их описания:
Тип | |
---|---|
standard | |
icon |
тема данных
Тема кнопки. Значение по умолчанию — outline
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-theme="filled_blue" |
В следующей таблице перечислены доступные темы и их описания:
Тема | |
---|---|
outline | |
filled_blue | |
filled_black |
размер данных
Размер кнопки. Значение по умолчанию large
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-size="small" |
В следующей таблице перечислены доступные размеры кнопок и их описания.
Размер | |
---|---|
large | |
medium | |
small |
текст данных
Текст кнопки. Значение по умолчанию — signin_with
. Визуальных отличий для текста кнопок со значками, имеющих разные атрибуты data-text
, нет. Единственное исключение — когда текст читается для доступности экрана.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-text="signup_with" |
В следующей таблице перечислены доступные тексты кнопок и их описания:
Текст | |
---|---|
signin_with | |
signup_with | |
continue_with | |
signin |
форма данных
Форма кнопки. Значение по умолчанию — rectangular
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-shape="rectangular" |
В следующей таблице перечислены доступные формы кнопок и их описания:
Форма | |
---|---|
rectangular | |
pill | |
circle | |
square |
data-logo_alignment
Расположение логотипа Google. Значение по умолчанию left
. Этот атрибут применяется только к кнопкам standard
типа. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-logo_alignment="center" |
В следующей таблице перечислены доступные выравнивания и их описания:
logo_alignment | |
---|---|
left | |
center |
ширина данных
Минимальная ширина кнопки в пикселях. Максимальная доступная ширина — 400 пикселей.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-width=400 |
локаль данных
Необязательный. Отобразить текст кнопки с использованием указанного языкового стандарта, в противном случае по умолчанию используются настройки учетной записи Google или браузера пользователя. Добавьте параметр hl
и код языка в директиву src при загрузке библиотеки, например: gsi/client?hl=<iso-639-code>
.
Если он не установлен, используется языковой стандарт браузера по умолчанию или предпочтения пользователя сеанса Google. Таким образом, разные пользователи могут видеть разные версии локализованных кнопок и, возможно, разных размеров.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-locale="zh_CN" |
data-click_listener
Вы можете определить функцию JavaScript, которая будет вызываться при нажатии кнопки «Войти через Google», используя атрибут data-click_listener
.
<script> function onClickHandler(){ console.log("Sign in with Google button clicked...") } </script> ..... <div class="g_id_signin" data-size="large" data-theme="outline" data-click_listener="onClickHandler"> </div>
В этом примере сообщение «Войти с помощью кнопки Google нажата...» регистрируется на консоли при нажатии кнопки «Войти с помощью Google».
состояние данных
Необязательно: поскольку на одной странице может отображаться несколько кнопок «Войти с помощью Google», вы можете назначить каждой кнопке уникальную строку. Та же строка будет возвращена вместе с токеном идентификатора, поэтому вы можете определить, какую кнопку пользователь нажал для входа.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-state="button 1" |
Серверная интеграция
Конечные точки на стороне сервера должны обрабатывать следующие запросы HTTP POST
.
Конечная точка обработчика токена идентификатора
Конечная точка обработчика токена идентификатора обрабатывает токен идентификатора. В зависимости от статуса соответствующей учетной записи вы можете войти в систему и либо направить его на страницу регистрации, либо направить на страницу привязки учетной записи для получения дополнительной информации.
HTTP-запрос POST
содержит следующую информацию:
Формат | Имя | Описание |
---|---|---|
печенье | g_csrf_token | Случайная строка, которая меняется при каждом запросе к конечной точке обработчика. |
Параметр запроса | g_csrf_token | Строка, аналогичная предыдущему значению файла cookie, g_csrf_token . |
Параметр запроса | credential | Токен идентификатора, который выдает Google. |
Параметр запроса | select_by | Как выбираются удостоверения. |
Параметр запроса | state | Этот параметр определяется только тогда, когда пользователь нажимает кнопку «Войти через Google», чтобы войти в систему, и указан атрибут state кнопки. |
полномочия
В декодированном виде токен идентификатора выглядит следующим образом:
header { "alg": "RS256", "kid": "f05415b13acb9590f70df862765c655f5a7a019e", // JWT signature "typ": "JWT" } payload { "iss": "https://accounts.google.com", // The JWT's issuer "nbf": 161803398874, "aud": "314159265-pi.apps.googleusercontent.com", // Your server's client ID "sub": "3141592653589793238", // The unique ID of the user's Google Account "hd": "gmail.com", // If present, the host domain of the user's GSuite email address "email": "elisa.g.beckett@gmail.com", // The user's email address "email_verified": true, // true, if Google has verified the email address "azp": "314159265-pi.apps.googleusercontent.com", "name": "Elisa Beckett", // If present, a URL to user's profile picture "picture": "https://lh3.googleusercontent.com/a-/e2718281828459045235360uler", "given_name": "Eliza", "family_name": "Beckett", "iat": 1596474000, // Unix timestamp of the assertion's creation time "exp": 1596477600, // Unix timestamp of the assertion's expiration time "jti": "abc161803398874def" }
sub
представляет собой глобальный уникальный идентификатор учетной записи Google. Используйте sub
только в качестве идентификатора пользователя, поскольку оно уникально среди всех учетных записей Google и никогда не используется повторно. Не используйте адрес электронной почты в качестве идентификатора, поскольку у учетной записи Google может быть несколько адресов электронной почты в разные моменты времени.
Используя поля email
, email_verified
и hd
вы можете определить, является ли Google хостингом и является ли он авторитетным для адреса электронной почты. В тех случаях, когда Google является авторитетным, подтверждается, что пользователь является законным владельцем учетной записи.
Случаи, когда Google авторитетен:
-
email
имеет суффикс@gmail.com
, это учетная запись Gmail. -
email_verified
имеет значение true и установленhd
, это учетная запись Google Workspace.
Пользователи могут регистрировать учетные записи Google без использования Gmail или Google Workspace. Если email
не содержит суффикса @gmail.com
и hd
отсутствует, Google не является авторитетным, и для проверки пользователя рекомендуется использовать пароль или другие методы запроса. email_verified
также может иметь значение true, поскольку Google изначально подтвердил пользователя при создании учетной записи Google, однако с тех пор право собственности на стороннюю учетную запись электронной почты могло измениться.
Поле exp
показывает срок действия токена, необходимый для проверки его на стороне вашего сервера . Для токена идентификатора, полученного при входе через Google, требуется один час. Вам необходимо проверить токен до истечения срока его действия. Не используйте exp
для управления сеансами. Токен идентификатора с истекшим сроком действия не означает, что пользователь вышел из системы. Ваше приложение отвечает за управление сеансами ваших пользователей.
select_by
В следующей таблице перечислены возможные значения поля select_by
. Тип кнопки, используемый вместе с состоянием сеанса и согласия, используется для установки значения.
Пользователь нажал кнопку «В одно касание» или «Войти через Google» или использовал бесконтактный автоматический процесс входа.
Был найден существующий сеанс, или пользователь выбрал и вошел в учетную запись Google, чтобы установить новый сеанс.
Прежде чем передать учетные данные токена идентификатора вашему приложению, пользователь либо
- нажали кнопку «Подтвердить», чтобы дать согласие на передачу учетных данных, или
- ранее предоставил согласие и использовал функцию «Выбрать учетную запись», чтобы выбрать учетную запись Google.
Значение этого поля установлено в один из этих типов:
Ценить | Описание |
---|---|
auto | Автоматический вход пользователя с существующим сеансом, который ранее предоставил согласие на обмен учетными данными. Применяется только к браузерам, не поддерживающим FedCM. |
user | Пользователь с существующим сеансом, который ранее предоставил согласие, нажал кнопку «Продолжить как» в одно касание, чтобы поделиться учетными данными. Применяется только к браузерам, не поддерживающим FedCM. |
fedcm | Пользователь нажал кнопку «Продолжить как» в одно касание, чтобы поделиться учетными данными с помощью FedCM. Применяется только к браузерам, поддерживаемым FedCM. |
fedcm_auto | Автоматический вход пользователя с существующим сеансом, который ранее предоставил согласие на передачу учетных данных с помощью FedCM One Tap. Применяется только к браузерам, поддерживаемым FedCM. |
user_1tap | Пользователь с существующим сеансом нажал кнопку «Продолжить как» в одно касание, чтобы дать согласие и поделиться учетными данными. Применяется только к Chrome v75 и выше. |
user_2tap | Пользователь без существующего сеанса нажал кнопку «Продолжить как» в одно касание, чтобы выбрать учетную запись, а затем нажал кнопку «Подтвердить» во всплывающем окне, чтобы дать согласие и поделиться учетными данными. Применяется к браузерам, не основанным на Chromium. |
btn | Пользователь с существующим сеансом, который ранее предоставил согласие, нажал кнопку «Войти с помощью Google» и выбрал учетную запись Google в разделе «Выбрать учетную запись», чтобы поделиться учетными данными. |
btn_confirm | Пользователь с существующим сеансом нажал кнопку «Войти с помощью Google» и нажал кнопку «Подтвердить», чтобы дать согласие и поделиться учетными данными. |
btn_add_session | Пользователь без существующего сеанса, который ранее предоставил согласие, нажал кнопку «Войти через Google», чтобы выбрать учетную запись Google и поделиться учетными данными. |
btn_confirm_add_session | Пользователь без существующего сеанса сначала нажал кнопку «Войти через Google», чтобы выбрать учетную запись Google, а затем нажал кнопку «Подтвердить», чтобы дать согласие и поделиться учетными данными. |
состояние
Этот параметр определяется только тогда, когда пользователь нажимает кнопку «Войти через Google», чтобы войти в систему, и указывается атрибут data-state
нажатой кнопки. Значение этого поля — то же значение, которое вы указали в атрибуте data-state
кнопки.
Поскольку на одной странице может отображаться несколько кнопок «Войти с помощью Google», вы можете назначить каждой кнопке уникальную строку. Следовательно, вы можете использовать этот параметр state
, чтобы определить, какую кнопку нажал пользователь для входа в систему.
Конечная точка обработчика учетных данных пароля
Конечная точка обработчика учетных данных пароля обрабатывает учетные данные пароля, которые получает собственный диспетчер учетных данных.
HTTP-запрос POST
содержит следующую информацию:
Формат | Имя | Описание |
---|---|---|
печенье | g_csrf_token | Случайная строка, которая меняется при каждом запросе к конечной точке обработчика. |
Параметр запроса | g_csrf_token | Строка, аналогичная предыдущему значению файла cookie, g_csrf_token . |
Параметр запроса | email | Это токен идентификатора, который выдает Google. |
Параметр запроса | password | Как выбираются удостоверения. |
На этой справочной странице описан API атрибутов данных HTML для входа в систему с помощью Google. Вы можете использовать API для отображения приглашения «В одно касание» или кнопки «Войти через Google» на своих веб-страницах.
Элемент с идентификатором «g_id_onload»
Вы можете поместить атрибуты данных «Вход через Google» в любые видимые или невидимые элементы, такие как <div>
и <span>
. Единственное требование — чтобы для идентификатора элемента было установлено значение g_id_onload
. Не размещайте этот идентификатор на нескольких элементах.
Атрибуты данных
В следующей таблице перечислены атрибуты данных с их описаниями:
Атрибут | |
---|---|
data-client_id | Идентификатор клиента вашего приложения |
data-auto_prompt | Отображение Google One Tap. |
data-auto_select | Включает автоматический выбор в Google One Tap. |
data-login_uri | URL-адрес вашей конечной точки входа в систему |
data-callback | Имя функции обработчика токена идентификатора JavaScript. |
data-native_login_uri | URL-адрес конечной точки обработчика учетных данных вашего пароля. |
data-native_callback | Имя функции обработчика учетных данных пароля JavaScript |
data-native_id_param | Имя параметра для значения credential.id |
data-native_password_param | Имя параметра для значения credential.password |
data-cancel_on_tap_outside | Определяет, следует ли отменить приглашение, если пользователь щелкнет за пределами приглашения. |
data-prompt_parent_id | Идентификатор DOM элемента контейнера приглашения One Tap. |
data-skip_prompt_cookie | Пропускает одно касание, если указанный файл cookie имеет непустое значение. |
data-nonce | Случайная строка для токенов ID |
data-context | Заголовок и слова в подсказке One Tap |
data-moment_callback | Имя функции прослушивателя уведомлений о состоянии пользовательского интерфейса. |
data-state_cookie_domain | Если вам нужно вызвать One Tap в родительском домене и его поддоменах, передайте родительский домен этому атрибуту, чтобы использовался один общий файл cookie. |
data-ux_mode | UX-процесс кнопки «Войти через Google» |
data-allowed_parent_origin | Источники, которым разрешено встраивать промежуточный iframe. Если этот атрибут присутствует, One Tap запускается в промежуточном режиме iframe. |
data-intermediate_iframe_close_callback | Переопределяет промежуточное поведение iframe по умолчанию, когда пользователи вручную закрывают One Tap. |
data-itp_support | Включает обновленный интерфейс One Tap UX в браузерах ITP. |
data-login_hint | Пропустите выбор учетной записи, предоставив пользователю подсказку. |
data-hd | Ограничьте выбор учетной записи по домену. |
data-use_fedcm_for_prompt | Разрешите браузеру контролировать запросы пользователей на вход в систему и выступать посредником в процессе входа между вашим веб-сайтом и Google. |
data-enable_redirect_uri_validation | Включите поток перенаправления кнопок, соответствующий правилам проверки URI перенаправления . |
Типы атрибутов
Следующие разделы содержат подробную информацию о типе каждого атрибута и пример.
data-client_id
Этот атрибут представляет собой идентификатор клиента вашего приложения, который находится и создается в консоли Google Cloud. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Да | data-client_id="CLIENT_ID.apps.googleusercontent.com" |
данные-auto_prompt
Этот атрибут определяет, отображать одно касание или нет. Значение по умолчанию — true
. Google One Tap не отображается, если это значение false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-auto_prompt="true" |
данные-auto_select
Этот атрибут определяет, следует ли возвращать токен идентификатора автоматически, без какого-либо взаимодействия с пользователем, если ваше приложение было одобрено только одним сеансом Google. Значение по умолчанию — false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-auto_select="true" |
data-login_uri
Этот атрибут является URI вашей конечной точки входа.
Значение должно точно соответствовать одному из разрешенных URI перенаправления для клиента OAuth 2.0, который вы настроили в консоли API, и должно соответствовать нашим правилам проверки URI перенаправления .
Этот атрибут можно опустить, если текущая страница является вашей страницей входа в систему, и в этом случае учетные данные публикуются на этой странице по умолчанию.
Ответ с учетными данными токена идентификатора отправляется на вашу конечную точку входа в систему, когда не определена функция обратного вызова и пользователь нажимает кнопки «Войти через Google» или «Одно касание», или происходит автоматический вход.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необязательный | Пример |
---|---|---|
URL-адрес | По умолчанию используется URI текущей страницы или указанное вами значение. Игнорируется, если установлены data-ux_mode="popup" и data-callback . | data-login_uri="https://www.example.com/login" |
Ваша конечная точка входа должна обрабатывать запросы POST, содержащие ключ credential
со значением токена идентификатора в теле.
Ниже приведен пример запроса к вашей конечной точке входа:
POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
credential=ID_TOKEN
обратный вызов данных
Этот атрибут представляет собой имя функции JavaScript, которая обрабатывает возвращаемый токен идентификатора. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Требуется, если data-login_uri не установлен. | data-callback="handleToken" |
Можно использовать один из атрибутов data-login_uri
и data-callback
. Это зависит от следующих конфигураций компонентов и режима UX:
Атрибут
data-login_uri
необходим для режимаredirect
кнопки «Войти через Google», который игнорирует атрибутdata-callback
.Один из этих двух атрибутов должен быть установлен для режима Google One Tap и
popup
окна кнопки входа в Google. Если оба установлены, атрибутdata-callback
имеет более высокий приоритет.
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-native_login_uri
Этот атрибут представляет собой URL-адрес конечной точки обработчика учетных данных вашего пароля. Если вы установите атрибут data-native_login_uri
или атрибут data-native_callback
, библиотека JavaScript возвращается к собственному диспетчеру учетных данных при отсутствии сеанса Google. Вам не разрешено одновременно устанавливать атрибуты data-native_callback
и data-native_login_uri
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-login_uri="https://www.example.com/password_login" |
данные-native_callback
Этот атрибут представляет собой имя функции JavaScript, которая обрабатывает учетные данные пароля, возвращаемые собственным диспетчером учетных данных браузера. Если вы установите атрибут data-native_login_uri
или атрибут data-native_callback
, библиотека JavaScript возвращается к собственному диспетчеру учетных данных при отсутствии сеанса Google. Вам не разрешено одновременно устанавливать data-native_callback
и data-native_login_uri
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-native_callback="handlePasswordCredential" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-native_id_param
Когда вы отправляете учетные данные пароля в конечную точку обработчика учетных данных пароля, вы можете указать имя параметра для поля credential.id
. Имя по умолчанию — email
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
URL-адрес | Необязательный | data-native_id_param="user_id" |
данные-native_password_param
Когда вы отправляете учетные данные пароля в конечную точку обработчика учетных данных пароля, вы можете указать имя параметра для значения credential.password
. Имя по умолчанию — password
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
URL-адрес | Необязательный | data-native_password_param="pwd" |
данные-cancel_on_tap_outside
Этот атрибут определяет, следует ли отменить запрос One Tap, если пользователь щелкнет за пределами приглашения. Значение по умолчанию — true
. Чтобы отключить его, установите значение false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-cancel_on_tap_outside="false" |
данные-prompt_parent_id
Этот атрибут устанавливает идентификатор DOM элемента контейнера. Если он не установлен, в правом верхнем углу окна отображается подсказка One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-prompt_parent_id="parent_id" |
data-skip_prompt_cookie
Этот атрибут пропускает One Tap, если указанный файл cookie имеет непустое значение. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-skip_prompt_cookie="SID" |
данные-nonce
Этот атрибут представляет собой случайную строку, используемую токеном идентификатора для предотвращения атак повторного воспроизведения. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-nonce="biaqbm70g23" |
Длина nonce ограничена максимальным размером JWT, поддерживаемым вашей средой, а также ограничениями размера HTTP отдельного браузера и сервера.
контекст данных
Этот атрибут изменяет текст заголовка и сообщений, отображаемых в подсказке One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-context="use" |
В следующей таблице перечислены все доступные контексты и их описания:
Контекст | |
---|---|
signin | «Войти через Google» |
signup | «Зарегистрируйтесь через Google» |
use | «Использовать с Google» |
data-moment_callback
Этот атрибут является именем функции прослушивателя уведомлений о состоянии пользовательского интерфейса. Для получения дополнительной информации обратитесь к типу данных PromptMomentNotification
.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-moment_callback="logMomentNotification" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-state_cookie_domain
Если вам нужно отображать One Tap в родительском домене и его поддоменах, передайте родительский домен этому атрибуту, чтобы использовался один файл cookie с общим состоянием. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-state_cookie_domain="example.com" |
данные-ux_mode
Этот атрибут устанавливает поток пользовательского интерфейса, используемый кнопкой «Войти через Google». Значение по умолчанию — popup
. Этот атрибут не влияет на пользовательский интерфейс One Tap. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-ux_mode="redirect" |
В следующей таблице перечислены доступные режимы пользовательского интерфейса и их описания.
UX-режим | |
---|---|
popup | Выполняет процесс входа в систему во всплывающем окне. |
redirect | Выполняет процесс входа в систему путем полного перенаправления страницы. |
data-allowed_parent_origin
Источники, которым разрешено встраивать промежуточный iframe. One Tap работает в промежуточном режиме iframe, если этот атрибут присутствует. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
строка или массив строк | Необязательный | data-allowed_parent_origin="https://example.com" |
В следующей таблице перечислены поддерживаемые типы значений и их описания.
Типы значений | ||
---|---|---|
string | URI одного домена. | "https://example.com" |
string array | Список URI доменов, разделенных запятыми. | "https://news.example.com, https://local.example.com" |
Если значение атрибута data-allowed_parent_origin
недопустимо, инициализация One Tap промежуточного режима iframe завершится неудачей и остановится.
Префиксы подстановочных знаков также поддерживаются. Например, "https://*.example.com"
соответствует example.com
и его поддоменам на всех уровнях (например, news.example.com
, login.news.example.com
). Что следует учитывать при использовании подстановочных знаков:
- Строки шаблонов не могут состоять только из подстановочных знаков и домена верхнего уровня. Например,
https://*.com
иhttps://*.co.uk
недействительны; Как отмечалось выше,"https://*.example.com"
соответствуетexample.com
и его поддоменам. Вы также можете использовать список, разделенный запятыми, для обозначения двух разных доменов. Например,"https://example1.com,https://*.example2.com"
соответствует доменамexample1.com
,example2.com
и поддоменамexample2.com
- Домены с подстановочными знаками должны начинаться с безопасной схемы https://, поэтому
"*.example.com"
считается недействительным.
данные-intermediate_iframe_close_callback
Переопределяет промежуточное поведение iframe по умолчанию, когда пользователи вручную закрывают One Tap, нажав кнопку «X» в пользовательском интерфейсе One Tap. Поведение по умолчанию — немедленное удаление промежуточного iframe из DOM.
Поле data-intermediate_iframe_close_callback
вступает в силу только в промежуточном режиме iframe. И это влияет только на промежуточный iframe, а не на iframe One Tap. Пользовательский интерфейс One Tap удаляется до вызова обратного вызова.
Тип | Необходимый | Пример |
---|---|---|
функция | Необязательный | data-intermediate_iframe_close_callback="logBeforeClose" |
Функции JavaScript внутри пространства имен не поддерживаются HTML API. Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback
вместо mylib.callback
.
data-itp_support
Это поле определяет, следует ли включать обновленный интерфейс One Tap UX в браузерах, поддерживающих интеллектуальное предотвращение отслеживания (ITP). Значение по умолчанию — false
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-itp_support="true" |
данные-login_hint
Если ваше приложение заранее знает, какой пользователь должен войти в систему, оно может предоставить Google подсказку для входа. В случае успеха выбор учетной записи пропускается. Допустимые значения: адрес электронной почты или подполе токена идентификатора.
Дополнительные сведения см. в документации OpenID Connect для login_hint
.
Тип | Необходимый | Пример |
---|---|---|
Нить. Это может быть адрес электронной почты или значение sub из токена идентификатора. | Необязательный | data-login_hint="elisa.beckett@gmail.com" |
данные-HD
Если у пользователя есть несколько учетных записей и ему необходимо войти в систему только со своей учетной записью Workspace, используйте это, чтобы предоставить Google подсказку по имени домена. В случае успеха учетные записи пользователей, отображаемые во время выбора учетной записи, ограничиваются предоставленным доменом. Подстановочное значение: *
предлагает пользователю только учетные записи Workspace и исключает потребительские учетные записи (user@gmail.com) при выборе учетной записи.
Дополнительные сведения см. в документации OpenID Connect для hd
.
Тип | Необходимый | Пример |
---|---|---|
Нить. Полное доменное имя или *. | Необязательный | data-hd="*" |
data-use_fedcm_for_prompt
Разрешите браузеру контролировать запросы пользователей на вход в систему и выступать посредником в процессе входа между вашим веб-сайтом и Google. По умолчанию ложь. Дополнительную информацию см. на странице «Миграция на FedCM» .
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-use_fedcm_for_prompt="true" |
data-enable_redirect_uri_validation
Включите поток перенаправления кнопок, соответствующий правилам проверки URI перенаправления .
Тип | Необходимый | Пример |
---|---|---|
логическое значение | Необязательный | data-enable_redirect_uri_validation="true" |
Элемент с классом «g_id_signin»
Если вы добавите g_id_signin
к атрибуту class
элемента, элемент будет отображаться как кнопка «Войти через Google».
Вы можете разместить несколько кнопок «Войти через Google» на одной странице. Каждая кнопка может иметь свои визуальные настройки. Настройки определяются следующими атрибутами данных.
Атрибуты визуальных данных
В следующей таблице перечислены атрибуты визуальных данных и их описания:
Атрибут | |
---|---|
data-type | Тип кнопки: иконка или стандартная кнопка. |
data-theme | Тема кнопки. Например, fill_blue или fill_black. |
data-size | Размер кнопки. Например, маленький или большой. |
data-text | Текст кнопки. Например, «Войти через Google» или «Зарегистрироваться через Google». |
data-shape | Форма кнопки. Например, прямоугольный или круглый. |
data-logo_alignment | Расположение логотипа Google: слева или по центру. |
data-width | Ширина кнопки в пикселях. |
data-locale | Текст кнопки отображается на языке, установленном в этом атрибуте. |
data-click_listener | Если установлено, эта функция вызывается при нажатии кнопки «Войти через Google». |
data-state | Если установлено, эта строка возвращается с токеном идентификатора. |
Типы атрибутов
Следующие разделы содержат подробную информацию о типе каждого атрибута и пример.
тип данных
Тип кнопки. Значение по умолчанию — standard
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Да | data-type="icon" |
В следующей таблице перечислены все доступные типы кнопок и их описания:
Тип | |
---|---|
standard | |
icon |
тема данных
Тема кнопки. Значение по умолчанию — outline
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-theme="filled_blue" |
В следующей таблице перечислены доступные темы и их описания:
Тема | |
---|---|
outline | |
filled_blue | |
filled_black |
размер данных
Размер кнопки. Значение по умолчанию large
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-size="small" |
В следующей таблице перечислены доступные размеры кнопок и их описания.
Размер | |
---|---|
large | |
medium | |
small |
текст данных
Текст кнопки. Значение по умолчанию — signin_with
. Визуальных отличий для текста кнопок со значками, имеющих разные атрибуты data-text
, нет. Единственное исключение — когда текст читается для доступности экрана.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-text="signup_with" |
В следующей таблице перечислены доступные тексты кнопок и их описания:
Текст | |
---|---|
signin_with | |
signup_with | |
continue_with | |
signin |
форма данных
Форма кнопки. Значение по умолчанию — rectangular
. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-shape="rectangular" |
В следующей таблице перечислены доступные формы кнопок и их описания:
Форма | |
---|---|
rectangular | |
pill | |
circle | |
square |
data-logo_alignment
Расположение логотипа Google. Значение по умолчанию left
. Этот атрибут применяется только к кнопкам standard
типа. Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-logo_alignment="center" |
В следующей таблице перечислены доступные выравнивания и их описания:
logo_alignment | |
---|---|
left | |
center |
ширина данных
Минимальная ширина кнопки в пикселях. Максимальная доступная ширина — 400 пикселей.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-width=400 |
локаль данных
Необязательный. Отобразить текст кнопки с использованием указанного языкового стандарта, в противном случае по умолчанию используются настройки учетной записи Google или браузера пользователя. Добавьте параметр hl
и код языка в директиву src при загрузке библиотеки, например: gsi/client?hl=<iso-639-code>
.
Если он не установлен, используется языковой стандарт браузера по умолчанию или предпочтения пользователя сеанса Google. Таким образом, разные пользователи могут видеть разные версии локализованных кнопок и, возможно, разных размеров.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-locale="zh_CN" |
data-click_listener
Вы можете определить функцию JavaScript, которая будет вызываться при нажатии кнопки «Войти через Google», используя атрибут data-click_listener
.
<script> function onClickHandler(){ console.log("Sign in with Google button clicked...") } </script> ..... <div class="g_id_signin" data-size="large" data-theme="outline" data-click_listener="onClickHandler"> </div>
В этом примере сообщение «Войти с помощью кнопки Google нажата...» регистрируется на консоли при нажатии кнопки «Войти с помощью Google».
состояние данных
Необязательно: поскольку на одной странице может отображаться несколько кнопок «Войти с помощью Google», вы можете назначить каждой кнопке уникальную строку. Та же строка будет возвращена вместе с токеном идентификатора, поэтому вы можете определить, какую кнопку пользователь нажал для входа.
Дополнительную информацию смотрите в следующей таблице:
Тип | Необходимый | Пример |
---|---|---|
нить | Необязательный | data-state="button 1" |
Серверная интеграция
Конечные точки на стороне сервера должны обрабатывать следующие запросы HTTP POST
.
Конечная точка обработчика токена идентификатора
Конечная точка обработчика токена идентификатора обрабатывает токен идентификатора. В зависимости от статуса соответствующей учетной записи вы можете войти в систему и либо направить его на страницу регистрации, либо направить на страницу привязки учетной записи для получения дополнительной информации.
HTTP-запрос POST
содержит следующую информацию:
Формат | Имя | Описание |
---|---|---|
печенье | g_csrf_token | Случайная строка, которая меняется при каждом запросе к конечной точке обработчика. |
Параметр запроса | g_csrf_token | Строка, аналогичная предыдущему значению файла cookie, g_csrf_token . |
Параметр запроса | credential | Токен идентификатора, который выдает Google. |
Параметр запроса | select_by | Как выбираются удостоверения. |
Параметр запроса | state | Этот параметр определяется только тогда, когда пользователь нажимает кнопку «Войти через Google», чтобы войти в систему, и указан атрибут state кнопки. |
полномочия
В декодированном виде токен идентификатора выглядит следующим образом:
header { "alg": "RS256", "kid": "f05415b13acb9590f70df862765c655f5a7a019e", // JWT signature "typ": "JWT" } payload { "iss": "https://accounts.google.com", // The JWT's issuer "nbf": 161803398874, "aud": "314159265-pi.apps.googleusercontent.com", // Your server's client ID "sub": "3141592653589793238", // The unique ID of the user's Google Account "hd": "gmail.com", // If present, the host domain of the user's GSuite email address "email": "elisa.g.beckett@gmail.com", // The user's email address "email_verified": true, // true, if Google has verified the email address "azp": "314159265-pi.apps.googleusercontent.com", "name": "Elisa Beckett", // If present, a URL to user's profile picture "picture": "https://lh3.googleusercontent.com/a-/e2718281828459045235360uler", "given_name": "Eliza", "family_name": "Beckett", "iat": 1596474000, // Unix timestamp of the assertion's creation time "exp": 1596477600, // Unix timestamp of the assertion's expiration time "jti": "abc161803398874def" }
sub
представляет собой глобальный уникальный идентификатор учетной записи Google. Используйте sub
только в качестве идентификатора пользователя, поскольку оно уникально среди всех учетных записей Google и никогда не используется повторно. Не используйте адрес электронной почты в качестве идентификатора, поскольку у учетной записи Google может быть несколько адресов электронной почты в разные моменты времени.
Используя поля email
, email_verified
и hd
вы можете определить, является ли Google хостингом и является ли он авторитетным для адреса электронной почты. В тех случаях, когда Google является авторитетным, подтверждается, что пользователь является законным владельцем учетной записи.
Случаи, когда Google авторитетен:
-
email
имеет суффикс@gmail.com
, это учетная запись Gmail. -
email_verified
имеет значение true и установленhd
, это учетная запись Google Workspace.
Пользователи могут регистрировать учетные записи Google без использования Gmail или Google Workspace. Если email
не содержит суффикса @gmail.com
и hd
отсутствует, Google не является авторитетным, и для проверки пользователя рекомендуется использовать пароль или другие методы запроса. email_verified
также может иметь значение true, поскольку Google изначально подтвердил пользователя при создании учетной записи Google, однако с тех пор право собственности на стороннюю учетную запись электронной почты могло измениться.
Поле exp
показывает срок действия токена, необходимый для проверки его на стороне вашего сервера . Для токена идентификатора, полученного при входе через Google, требуется один час. Вам необходимо проверить токен до истечения срока его действия. Не используйте exp
для управления сеансами. Токен идентификатора с истекшим сроком действия не означает, что пользователь вышел из системы. Ваше приложение отвечает за управление сеансами ваших пользователей.
select_by
В следующей таблице перечислены возможные значения поля select_by
. Тип кнопки, используемый вместе с состоянием сеанса и согласия, используется для установки значения.
Пользователь нажал кнопку «В одно касание» или «Войти через Google» или использовал бесконтактный автоматический процесс входа.
Был найден существующий сеанс, или пользователь выбрал и вошел в учетную запись Google, чтобы установить новый сеанс.
Прежде чем передать учетные данные токена идентификатора вашему приложению, пользователь либо
- нажали кнопку «Подтвердить», чтобы дать согласие на передачу учетных данных, или
- ранее предоставил согласие и использовал функцию «Выбрать учетную запись», чтобы выбрать учетную запись Google.
Значение этого поля установлено в один из этих типов:
Ценить | Описание |
---|---|
auto | Автоматический вход пользователя с существующим сеансом, который ранее предоставил согласие на обмен учетными данными. Применяется только к браузерам, не поддерживающим FedCM. |
user | Пользователь с существующим сеансом, который ранее предоставил согласие, нажал кнопку «Продолжить как» в одно касание, чтобы поделиться учетными данными. Применяется только к браузерам, не поддерживающим FedCM. |
fedcm | Пользователь нажал кнопку «Продолжить как» в одно касание, чтобы поделиться учетными данными с помощью FedCM. Применяется только к браузерам, поддерживаемым FedCM. |
fedcm_auto | Автоматический вход пользователя с существующим сеансом, который ранее предоставил согласие на передачу учетных данных с помощью FedCM One Tap. Применяется только к браузерам, поддерживаемым FedCM. |
user_1tap | Пользователь с существующим сеансом нажал кнопку «Продолжить как» в одно касание, чтобы дать согласие и поделиться учетными данными. Применяется только к Chrome v75 и выше. |
user_2tap | Пользователь без существующего сеанса нажал кнопку «Продолжить как» в одно касание, чтобы выбрать учетную запись, а затем нажал кнопку «Подтвердить» во всплывающем окне, чтобы дать согласие и поделиться учетными данными. Применяется к браузерам, не основанным на Chromium. |
btn | Пользователь с существующим сеансом, который ранее предоставил согласие, нажал кнопку «Войти с помощью Google» и выбрал учетную запись Google в разделе «Выбрать учетную запись», чтобы поделиться учетными данными. |
btn_confirm | Пользователь с существующим сеансом нажал кнопку «Войти с помощью Google» и нажал кнопку «Подтвердить», чтобы дать согласие и поделиться учетными данными. |
btn_add_session | Пользователь без существующего сеанса, который ранее предоставил согласие, нажал кнопку «Войти через Google», чтобы выбрать учетную запись Google и поделиться учетными данными. |
btn_confirm_add_session | Пользователь без существующего сеанса сначала нажал кнопку «Войти через Google», чтобы выбрать учетную запись Google, а затем нажал кнопку «Подтвердить», чтобы дать согласие и поделиться учетными данными. |
состояние
Этот параметр определяется только тогда, когда пользователь нажимает кнопку «Войти через Google», чтобы войти в систему, и указывается атрибут data-state
нажатой кнопки. Значение этого поля — то же значение, которое вы указали в атрибуте data-state
кнопки.
Поскольку на одной странице может отображаться несколько кнопок «Войти с помощью Google», вы можете назначить каждой кнопке уникальную строку. Следовательно, вы можете использовать этот параметр state
, чтобы определить, какую кнопку нажал пользователь для входа в систему.
Конечная точка обработчика учетных данных пароля
Конечная точка обработчика учетных данных пароля обрабатывает учетные данные пароля, которые получает собственный диспетчер учетных данных.
HTTP-запрос POST
содержит следующую информацию:
Формат | Имя | Описание |
---|---|---|
печенье | g_csrf_token | Случайная строка, которая меняется при каждом запросе к конечной точке обработчика. |
Параметр запроса | g_csrf_token | Строка, аналогичная предыдущему значению файла cookie, g_csrf_token . |
Параметр запроса | email | Это токен идентификатора, который выдает Google. |
Параметр запроса | password | Как выбираются удостоверения. |