На этой странице описан API атрибутов данных HTML для функции "Войти с аккаунтом Google", который используется для показа кнопки "Войти с аккаунтом Google" или подсказки One Tap на веб-страницах.
Элемент с идентификатором g_id_onload
Атрибуты данных функции "Войти с аккаунтом Google" можно добавлять в любые видимые или невидимые элементы, например <div> и <span>. Единственное требование – идентификатор элемента должен быть задан как g_id_onload. Не используйте этот идентификатор для нескольких элементов.
Атрибуты данных
В таблице ниже перечислены атрибуты данных и их описания.
| Атрибут | |
|---|---|
data-client_id |
Идентификатор клиента вашего приложения. |
data-color_scheme |
Цветовая схема, которая применяется к подсказке One Tap. |
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 |
Пропускает One Tap, если указанный файл cookie имеет непустое значение. |
data-nonce |
Случайная строка для токенов идентификации. |
data-essential_claims |
Дополнительные утверждения, которые нужно включить в токен идентификатора, возвращаемый Google. |
data-context |
заголовок и текст в подсказке One Tap; |
data-moment_callback |
Название функции прослушивателя уведомлений о статусе интерфейса подсказки |
data-state_cookie_domain |
Если вам нужно вызвать One Tap в родительском домене и его субдоменах, передайте родительский домен в этот атрибут, чтобы использовался один общий файл cookie. |
data-ux_mode |
Процесс входа с аккаунтом Google |
data-allowed_parent_origin |
Источники, которым разрешено встраивать промежуточный iframe. Если этот атрибут присутствует, One Tap запускается в режиме промежуточного iframe. |
data-intermediate_iframe_close_callback |
Переопределяет стандартное поведение промежуточного окна iframe, когда пользователи вручную закрывают One Tap. |
data-itp_support |
Включает улучшенный интерфейс One Tap в браузерах с ITP. |
data-login_hint |
Пропустить выбор аккаунта, предоставив подсказку для пользователя. |
data-hd |
Ограничить выбор аккаунтов по домену. |
data-use_fedcm_for_prompt |
Разрешите браузеру управлять предложениями войти в аккаунт и процессом входа между вашим сайтом и Google. |
data-use_fedcm_for_button |
Это поле определяет, следует ли использовать кнопку FedCM UX в Chrome (на компьютерах с M125 и более поздними версиями и на устройствах Android с M128 и более поздними версиями). По умолчанию используется значение false. |
data-button_auto_select |
Включать ли параметр автоматического выбора для процесса кнопки FedCM. Если этот параметр включен, вернувшиеся пользователи с активным сеансом Google будут автоматически входить в систему, минуя окно выбора аккаунта. Значение по умолчанию – false. |
Типы атрибутов
В разделах ниже приведены подробные сведения о каждом типе атрибутов и примеры.
data-client_id
Этот атрибут представляет собой идентификатор клиента приложения, который можно найти и создать в консоли Google Cloud. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Да | data-client_id="CLIENT_ID.apps.googleusercontent.com" |
data-color_scheme
Цветовая схема, которая применяется к подсказке One Tap. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательное поле. По умолчанию используется цветовая схема системы пользователя. | data-color_scheme="dark" |
В таблице ниже перечислены доступные цветовые схемы и их описания.
| Цветовая схема | |
|---|---|
default |
Применить цветовую схему по умолчанию, заданную в системе пользователя. В зависимости от его предпочтений это может быть светлая или темная тема. |
light |
Примени светлую цветовую схему. |
dark |
Примени темную цветовую схему. |
data-auto_prompt
Этот атрибут определяет, будет ли показываться окно One Tap. Значение по умолчанию – true. Если значение равно false, Google One Tap не показывается. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| Логическое значение | Необязательно | data-auto_prompt="true" |
data-auto_select
Этот атрибут определяет, нужно ли автоматически возвращать токен идентификатора без взаимодействия с пользователем, если только один сеанс Google одобрил ваше приложение. Значение по умолчанию – false. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| Логическое значение | Необязательно | data-auto_select="true" |
data-login_uri
Этот атрибут является URI конечной точки входа.
Значение должно точно соответствовать одному из авторизованных URI перенаправления для клиента OAuth 2.0, который вы настроили в Google Auth Platform, и соответствовать нашим правилам проверки URI перенаправления.
Этот атрибут можно опустить, если текущая страница является страницей входа. В этом случае учетные данные по умолчанию отправляются на эту страницу.
Ответ с учетными данными токена идентификатора отправляется на конечную точку входа, если функция обратного вызова не определена и пользователь нажимает кнопку "Войти с аккаунтом Google" или One Tap или выполняется автоматический вход.
Ваша конечная точка входа должна обрабатывать запросы POST, содержащие параметр credential со значением токена идентификатора в теле.
Подробная информация приведена в таблице ниже.
| Тип | Необязательно | Пример |
|---|---|---|
| URL | По умолчанию используется URI текущей страницы или указанное вами значение. Игнорируется, если заданы data-ux_mode="popup" и
data-callback. |
data-login_uri="https://www.example.com/login" |
data-callback
Этот атрибут содержит название функции JavaScript, которая обрабатывает возвращенный токен идентификатора. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Обязательно, если не указано значение data-login_uri. |
data-callback="handleToken" |
Можно использовать один из атрибутов: data-login_uri или data-callback. Это зависит от следующих настроек компонента и режима UX:
Атрибут
data-login_uriобязателен для кнопки "Войти с аккаунтом Google" в режиме UXredirect, который игнорирует атрибутdata-callback.Один из этих двух атрибутов должен быть задан для Google One Tap и кнопки "Войти с аккаунтом Google" в режиме UX
popup. Если заданы оба атрибута, приоритет имеетdata-callback.
Функции JavaScript в пространстве имен не поддерживаются HTML API.
Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback вместо mylib.callback.
Функции обратного вызова передается объект CredentialResponse в качестве параметра.
Подробные сведения о возможных значениях ответа приведены в CredentialResponse.
data-native_login_uri
Этот атрибут представляет собой URL конечной точки обработчика учетных данных пароля. Если вы зададите атрибут data-native_login_uri или data-native_callback, библиотека JavaScript будет использовать встроенный менеджер учетных данных, когда сеанс Google неактивен. Нельзя одновременно задавать атрибуты data-native_callback и data-native_login_uri. Дополнительную информацию можно найти в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-login_uri="https://www.example.com/password_login" |
data-native_callback
Этот атрибут представляет собой название функции JavaScript, которая обрабатывает учетные данные пароля, возвращенные встроенным менеджером учетных данных браузера. Если вы зададите атрибут data-native_login_uri или data-native_callback, библиотека JavaScript будет использовать встроенный менеджер учетных данных, когда сеанс Google неактивен. Нельзя одновременно задавать значения для data-native_callback и data-native_login_uri. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | 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" |
data-native_password_param
При отправке учетных данных пароля в конечную точку обработчика учетных данных пароля вы можете указать название параметра для значения credential.password. Название по умолчанию – password. Дополнительную информацию можно найти в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| URL | Необязательно | data-native_password_param="pwd" |
data-cancel_on_tap_outside
Этот атрибут определяет, нужно ли отменять запрос на вход в одно касание, если пользователь нажимает за пределами окна. Значение по умолчанию: true. Чтобы отключить его, задайте значение false. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| Логическое значение | Необязательно | data-cancel_on_tap_outside="false" |
data-prompt_parent_id
Этот атрибут задает идентификатор DOM элемента контейнера. Если он не задан, запрос One Tap будет показан в правом верхнем углу окна. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-prompt_parent_id="parent_id" |
data-skip_prompt_cookie
Использует файл cookie для управления показом запроса One Tap. Если файл cookie, указанный в этом атрибуте, имеет непустое значение, запрос не показывается. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-skip_prompt_cookie="SID" |
data-nonce
Этот атрибут представляет собой случайную строку, используемую токеном идентификатора для защиты от атак повторного воспроизведения. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-nonce="biaqbm70g23" |
Длина одноразового кода ограничена максимальным размером JWT, поддерживаемым вашей средой, а также ограничениями на размер HTTP-запросов в браузере и на сервере.
data-essential_claims
Этот атрибут представляет собой строку, которая используется для запроса дополнительных утверждений, которые должны быть включены в токен идентификатора, возвращаемый Google. Полный список утверждений, принимаемых Google, приведен в разделе Поддерживаемые утверждения.
Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-essential_claims="auth_time, amr" |
data-context
Это поле меняет текст заголовка и сообщений, которые показываются в подсказке One Tap. Оно не влияет на браузеры с ITP. Значение по умолчанию – signin.
Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-context="use" |
В таблице ниже перечислены все доступные контексты и их описания.
| Контекст | |
|---|---|
signin |
"Войти в" |
signup |
"Зарегистрироваться в" |
use |
"Использовать" |
data-moment_callback
Этот атрибут представляет собой название функции прослушивателя уведомлений о статусе интерфейса запроса. Дополнительную информацию вы найдете в описании типа данных PromptMomentNotification.
Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-moment_callback="logMomentNotification" |
Функции JavaScript в пространстве имен не поддерживаются HTML API.
Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback вместо mylib.callback.
data-state_cookie_domain
Если вам нужно показывать One Tap в родительском домене и его субдоменах, передайте родительский домен в этот атрибут, чтобы использовался один файл cookie с общим состоянием. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-state_cookie_domain="example.com" |
data-ux_mode
Этот атрибут задает UX-поток, используемый кнопкой "Войти с аккаунтом Google". Значение по умолчанию – popup. Этот атрибут не влияет на интерфейс One Tap. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-ux_mode="redirect" |
В таблице ниже перечислены доступные режимы UX и их описания.
| Режим 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"считается недопустимым.
data-intermediate_iframe_close_callback
Переопределяет стандартное поведение промежуточного окна iframe, когда пользователи вручную закрывают One Tap, нажимая кнопку "X" в интерфейсе One Tap. Режим работы по умолчанию — удаление промежуточного окна iframe из DOM сразу.
Поле data-intermediate_iframe_close_callback действует только в режиме промежуточного окна iframe. и влияет только на промежуточный фрейм iframe, а не на фрейм iframe функции One Tap. Интерфейс One Tap удаляется до вызова обратного вызова.
| Тип | Обязательно? | Пример |
|---|---|---|
| function | Необязательно | data-intermediate_iframe_close_callback="logBeforeClose" |
Функции JavaScript в пространстве имен не поддерживаются HTML API.
Вместо этого используйте глобальную функцию JavaScript без пространства имен. Например, используйте mylibCallback вместо mylib.callback.
data-itp_support
Это поле определяет, следует ли включить улучшенный интерфейс One Tap в браузерах, поддерживающих Intelligent Tracking Prevention (ITP). Значение по умолчанию – false. Дополнительную информацию можно найти в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| Логическое значение | Необязательно | data-itp_support="false" |
data-login_hint
Если ваше приложение заранее знает, какой пользователь должен войти в систему, оно может предоставить Google подсказку для входа. Если все пройдет успешно, выбор аккаунта будет пропущен. Допустимые значения: адрес электронной почты или поле sub токена идентификатора.
Дополнительную информацию можно найти в документации по OpenID Connect для login_hint.
| Тип | Обязательно? | Пример |
|---|---|---|
Строка. Это может быть адрес электронной почты или значение поля sub из токена идентификации. |
Необязательно | data-login_hint="elisa.beckett@gmail.com" |
data-hd
Если у пользователя несколько аккаунтов, но он должен входить только с аккаунтом Workspace, используйте этот параметр, чтобы предоставить Google подсказку о доменном имени. В случае успеха при выборе аккаунта будут показываться только аккаунты из указанного домена.
Подстановочное значение * предлагает пользователю только аккаунты Workspace и исключает обычные аккаунты (user@gmail.com) при выборе аккаунта.
Дополнительную информацию можно найти в документации по OpenID Connect для hd.
| Тип | Обязательно? | Пример |
|---|---|---|
| Строка. Полное доменное имя или *. | Необязательно | data-hd="*" |
data-use_fedcm_for_prompt
Разрешите браузеру управлять предложениями войти в аккаунт и процессом входа между вашим сайтом и Google. Значение по умолчанию – false. Подробную информацию вы найдете на странице Переход на FedCM.
| Тип | Обязательно? | Пример |
|---|---|---|
| Логическое значение | Поддержка прекращена | data-use_fedcm_for_prompt="true" |
data-use_fedcm_for_button
Это поле определяет, следует ли использовать кнопку FedCM UX в Chrome (на компьютерах с M125 и более поздними версиями и на устройствах Android с M128 и более поздними версиями). Значение по умолчанию – false. Дополнительную информацию можно найти в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| Логическое значение | Необязательно | data-use_fedcm_for_button="true" |
data-button_auto_select
Это поле определяет, нужно ли включить параметр автоматического выбора для процесса кнопки FedCM. Если включить эту функцию, то вернувшиеся пользователи с активным сеансом Google будут автоматически входить в аккаунт без запроса на выбор аккаунта. Значение по умолчанию – false. Вам нужно включить автоматический вход по кнопке во время запуска. Дополнительную информацию можно найти в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| Логическое значение | Необязательно | data-button_auto_select="true" |
Элемент с классом g_id_signin
Если вы добавите g_id_signin в атрибут class элемента, он будет отображаться как кнопка "Войти с аккаунтом Google".
На одной странице можно разместить несколько кнопок "Войти с аккаунтом Google". Для каждой кнопки можно задать собственные визуальные настройки. Настройки определяются следующими атрибутами данных.
Атрибуты визуальных данных
В таблице ниже перечислены атрибуты визуальных данных и их описания.
| Атрибут | |
|---|---|
data-type |
Тип кнопки: значок или стандартная кнопка. |
data-theme |
Тема кнопки. Например, filled_blue или filled_black. |
data-size |
Размер кнопки. Например, маленький или большой. |
data-text |
Текст кнопки. Например, "Войти с аккаунтом Google" или "Зарегистрироваться с аккаунтом Google". |
data-shape |
Форма кнопки. например прямоугольной или круглой. |
data-logo_alignment |
Выравнивание логотипа Google: по левому краю или по центру. |
data-width |
Ширина кнопки в пикселях. |
data-locale |
Текст кнопки будет показываться на языке, указанном в этом атрибуте. |
data-click_listener |
Если задано, эта функция вызывается при нажатии кнопки "Войти с аккаунтом Google". |
data-state |
Если задать эту строку, она будет возвращаться вместе с токеном идентификатора. |
Типы атрибутов
В разделах ниже приведены сведения о типах атрибутов и примеры.
data-type
Тип кнопки. Значение по умолчанию: standard. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Да | data-type="icon" |
В таблице ниже перечислены все доступные типы кнопок и их описания.
| Тип | |
|---|---|
standard |
|
icon |
|
data-theme
Тема кнопки. Значение по умолчанию: outline. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-theme="filled_blue" |
В таблице ниже перечислены доступные темы и их описания.
| Тема | Примеры | Характеристики |
|---|---|---|
outline |
|
Заливка: #FFFFFF Обводка: #747775 | 1px | внутри Шрифт: #1F1F1F | Roboto Medium | 14/20 Персонализированный: #1F1F1F | Roboto | Medium 12/14 | Regular 11/13 |
filled_blue |
|
Заливка: #0B57D0 Обводка: #OB57D0 | 1 пкс | внутри Шрифт: #FFFFFF | Google Sans Medium | 14/20 Персонализированный: #FFFFFF | Roboto | Medium 12/14 | Regular 11/13 |
filled_black |
|
Заливка: #202124 Обводка: #OB57D0 | 1px | внутри Шрифт: #FFFFFF | Google Sans Medium | 14/20 Персонализированный: #FFFFFF | Roboto | Medium 12/14 | Regular 11/13 |
outline_dark |
|
Заливка: #131314 Обводка: #8E918F | 1px | внутри Шрифт: #FFFFFF | Google Sans Medium | 14/20 Персонализированный: #FFFFFF | Roboto | Medium 12/14 | Regular 11/13 |
data-size
Размер кнопки. Значение по умолчанию: large. Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-size="small" |
В таблице ниже перечислены доступные размеры кнопок и их описания.
| Размер | |
|---|---|
large |
|
medium |
|
small |
|
data-text
Текст кнопки. Значение по умолчанию: signin_with. Текст кнопок со значками, у которых разные атрибуты data-text, визуально не отличается. Единственное исключение – когда текст читается для специальных возможностей экрана.
Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-text="signup_with" |
В таблице ниже перечислены доступные тексты кнопок и их описания.
| Текст | |
|---|---|
signin_with |
|
signup_with |
|
continue_with |
|
signin |
|
data-shape
Форма кнопки. Значение по умолчанию: rectangular. Дополнительную информацию можно найти в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-shape="rectangular" |
В таблице ниже перечислены доступные формы кнопок и их описания.
| Фигура | |
|---|---|
rectangular |
icon, то значение будет таким же, как и для square.
|
pill |
icon, то значение будет таким же, как и для circle.
|
circle |
standard, то значение будет таким же, как и для pill.
|
square |
standard, то значение будет таким же, как и для rectangular.
|
data-logo_alignment
Выравнивание логотипа Google. Значение по умолчанию: left. Этот атрибут применяется только к типу кнопки standard. Дополнительную информацию можно найти в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-logo_alignment="center" |
В таблице ниже перечислены доступные варианты выравнивания и их описания.
| logo_alignment | |
|---|---|
left |
|
center |
|
data-width
Минимальная ширина кнопки в пикселях. Максимальная ширина – 400 пикселей.
Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-width=400 |
data-locale
Необязательное поле. Текст кнопки будет показываться на указанном языке. Если язык не задан, то будет использоваться язык, выбранный в аккаунте Google или настройках браузера пользователя. Добавьте параметр hl и код языка в директиву src при загрузке библиотеки, например gsi/client?hl=<iso-639-code>.
Если правило не настроено, используется язык браузера по умолчанию или язык, выбранный пользователем в сеансе Google. Поэтому разные пользователи могут видеть разные версии локализованных кнопок, возможно, разных размеров.
Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | 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".
data-state
Необязательный параметр. Поскольку на одной странице может быть несколько кнопок "Войти с аккаунтом Google", вы можете назначить каждой из них уникальную строку. Эта строка будет возвращена вместе с токеном идентификатора, чтобы вы могли определить, какую кнопку нажал пользователь для входа.
Подробная информация приведена в таблице ниже.
| Тип | Обязательно? | Пример |
|---|---|---|
| string | Необязательно | data-state="button 1" |
Интеграция на стороне сервера
Конечные точки на стороне сервера должны обрабатывать следующие HTTP-запросы POST.
Конечная точка обработчика токена идентификации
Конечная точка обработчика токена идентификации обрабатывает токен идентификации. В зависимости от статуса аккаунта вы можете выполнить вход пользователя и перенаправить его на страницу регистрации или связывания аккаунтов, чтобы получить дополнительную информацию. Клиенты ДОЛЖНЫ игнорировать нераспознанные параметры ответа.
Пример запроса к конечной точке входа:
POST /login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: g_csrf_token=<RANDOM_STRING>
Host: www.example.com
credential=<JWT_ENCODED_ID_TOKEN>&g_csrf_token=<RANDOM_STRING>
HTTP-запрос POST содержит следующую информацию:
| Формат | Название | Описание |
|---|---|---|
| Файл сookie | g_csrf_token |
Случайная строка, которая меняется при каждом запросе к конечной точке входа, указанной в data-login_uri. Должна совпадать со значением в параметре запроса g_csrf_token. |
| Параметр запроса | g_csrf_token |
Случайная строка, которая меняется при каждом запросе к конечной точке входа, указанной в data-login_uri. Должна соответствовать значению файла cookie g_csrf_token. |
| Параметр запроса | credential |
Закодированный токен идентификатора JWT, выпущенный Google. |
| Параметр запроса | 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 Google Workspace email address "auth_time": 1748875426, "amr": ["mfa", "pwd", "tel"], "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 creation time "exp": 1596477600, // Unix timestamp of the assertion expiration time "jti": "abc161803398874def" }
Клиенты ДОЛЖНЫ игнорировать нераспознанные утверждения JWT.
Поле sub – это глобальный уникальный идентификатор аккаунта Google. В качестве идентификатора пользователя используйте только поле sub, поскольку оно уникально для всех аккаунтов 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 также может быть истинным, поскольку Google изначально подтвердил пользователя при создании аккаунта Google, однако с тех пор право собственности на сторонний аккаунт электронной почты могло измениться.
В поле exp указано время, до которого вы должны проверить токен на стороне сервера. Для токена идентификации, полученного при входе с аккаунтом Google, этот срок составляет один час. Подтвердите токен до истечения срока его действия. Не используйте exp для управления сеансами. Истечение срока действия токена идентификации не означает, что пользователь вышел из аккаунта. Ваше приложение отвечает за управление сеансами пользователей.
g_csrf_token
Токен состояния для защиты от подделки. Это токен подделки межсайтовых запросов (CSRF), созданный библиотекой gsi/client. Случайное значение включается и в файл cookie, и в параметр запроса в теле полезной нагрузки POST. Если эти два значения не совпадают при обработке запроса на вашем сервере, запрос следует считать недействительным.
штат
Этот параметр определяется, только если пользователь нажимает кнопку "Войти с аккаунтом Google" и у этой кнопки задан атрибут data-state. Значение этого поля совпадает со значением, указанным в атрибуте data-state кнопки.
Поскольку на одной странице может быть несколько кнопок "Войти с аккаунтом Google", вы можете назначить каждой кнопке уникальную строку. Таким образом, вы можете использовать параметр state, чтобы определить, какую кнопку нажал пользователь для входа.
Конечная точка обработчика учетных данных пароля
Конечная точка обработчика учетных данных пароля обрабатывает учетные данные пароля, которые извлекает встроенный менеджер учетных данных.
HTTP-запрос POST содержит следующую информацию:
| Формат | Название | Описание |
|---|---|---|
| Файл сookie | g_csrf_token |
Случайная строка, которая меняется при каждом запросе к конечной точке входа, указанной в data-native_login_uri. Должна совпадать со значением в параметре запроса g_csrf_token. |
| Параметр запроса | g_csrf_token |
Случайная строка, которая меняется при каждом запросе к конечной точке входа, указанной в data-native_login_uri. Должна соответствовать значению файла cookie g_csrf_token. |
| Параметр запроса | email |
Это токен идентификации, который выдает Google. |
| Параметр запроса | password |
Как выбираются учетные данные. |