Поддержка диалоговых действий будет прекращена 13 июня 2023 г. Дополнительные сведения см. в разделе Закрытие диалоговых действий .

Руководство по концепции входа в Google

Google Sign-In (GSI) для Assistant обеспечивает наиболее удобный процесс связывания для пользователей и самый простой процесс для разработчиков. С GSI ваше действие может запросить доступ к профилю Google вашего пользователя во время разговора и, если пользователь дает согласие, получить имя пользователя, адрес электронной почты и изображение профиля. Затем ваше действие может использовать эту информацию, чтобы проверить, есть ли у пользователя учетная запись Google в вашей системе. Если нет, ваше действие спрашивает пользователя, хотят ли они создать новую учетную запись в вашей системе на основе информации своего профиля Google.

GSI является рекомендуемым решением для привязки учетных записей, если применимо любое из следующих условий:

  • У вас нет существующей системы аутентификации и/или вы ожидаете, что все ваши пользователи будут иметь учетную запись Google. Например, если ваше действие специально нацелено на Ассистента, вы можете ожидать, что все ваши пользователи будут иметь учетные записи Google.
  • У вас есть существующая система аутентификации, и вы хотите связать только пользователей, которые вошли в вашу систему, используя свои учетные записи Google.

Чтобы убедиться, что GSI — это правильное решение для вас, см. страницу «Выбор типа привязки учетной записи ».

Ключевые термины

Прежде чем читать о том, как работает GSI, ознакомьтесь со следующими терминами:

  • Токен Google ID: подписанное подтверждение личности пользователя, содержащее основную информацию о профиле пользователя Google (его имя, адрес электронной почты и изображение профиля). Токен Google ID — это веб-токен JSON (JWT).

    Ниже приведен пример расшифрованного токена:

{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • user.verificationStatus : свойство, установленное системой, чтобы указать, есть ли в текущем сеансе проверенный пользователь.

  • user.accountLinkingStatus : свойство, установленное системой, чтобы указать, имеет ли пользователь в текущем сеансе связанную личность.

  • Сцена системы привязки учетной записи: предопределенная сцена, которая реализует поток подтверждения для привязки учетной записи и может быть настроена в соответствии с конкретными вариантами использования.

Как это работает

Основной поток для GSI выглядит следующим образом:

  1. Ваше действие запрашивает у пользователя согласие на доступ к его профилю Google.
  2. После того как пользователь дает согласие, ваше действие получает токен Google ID, содержащий информацию о профиле пользователя в Google.
  3. Подтвердите и расшифруйте токен, чтобы прочитать содержимое профиля. Если вы используете библиотеку Actions on Google Fulfillment для Node.js, она проверяет и декодирует токен за вас.
  4. Ваше действие использует этот токен, чтобы проверить, существует ли в вашей системе информация о профиле пользователя Google.

    1. Если это так, пользователь уже вошел в вашу систему со своей учетной записью Google. Пользователь может продолжить разговор с Ассистентом, привязав свою личность к своей учетной записи Google.
    2. Если это не так, пользователь может создать новую учетную запись в вашей системе с информацией, содержащейся в токене Google ID. Затем пользователь может продолжить разговор с Ассистентом, связав свою новую учетную запись.

Процессы входа в Google

В этом разделе описываются различные процессы, которые могут возникнуть при входе через Google.

Поток 1: информация о пользователе существует в вашей системе

На следующей диаграмме показан сквозной поток, который происходит с GSI, когда информация о пользователе уже существует в вашей системе:

В этом случае вы переходите к сцене системы привязки учетных записей и предоставляете индивидуальное обоснование. Эта сцена запрашивает у пользователя разрешение на доступ к информации его профиля Google.

После согласия пользователя Ассистент отправляет запрос, содержащий информацию о профиле для user@gmail.com . В этом случае информация, содержащаяся в токене Google ID для user@gmail.com , совпадает с учетной записью в вашей системе, поэтому личность пользователя в вашем действии автоматически связывается с этой учетной записью. Затем ваш веб-перехватчик может прочитать обычный заказ пользователя из базы данных и ответить соответствующим образом.

Поток 2: информация о пользователе не существует в вашей системе

На следующей диаграмме показан сквозной поток, который происходит с GSI, когда информация о пользователе не существует в вашей системе:

В этом случае информация, содержащаяся в токене Google ID для user@gmail.com , не соответствует учетной записи в вашей системе, поэтому Ассистент спрашивает пользователя, не хотят ли они создать новую учетную запись. Пользователь может завершить процесс создания учетной записи с помощью голоса, а не переноса на экранированное устройство.

Когда пользователь соглашается создать учетную запись, ваша служба использует информацию в токене идентификатора (имя пользователя и адрес электронной почты) для создания учетной записи для пользователя. После создания учетной записи личность пользователя в вашем действии привязывается к его новой учетной записи Google.

В этом случае у пользователя нет обычного заказа, потому что он новичок в сервисе, поэтому ваше действие спрашивает, что он хочет заказать. Вы также можете спросить пользователя, не хотят ли они установить свой последний заказ в качестве обычного.