Google 로그인 개념 가이드

어시스턴트용 Google 로그인 (GSI)은 사용자에게 가장 원활한 연결 환경을 제공하며 개발자가 가장 쉽게 구현할 수 있는 흐름입니다. GSI를 사용하면 작업이 대화 중에 사용자의 Google 프로필에 대한 액세스 권한을 요청할 수 있으며, 사용자가 동의하는 경우 사용자 이름, 이메일 주소, 프로필 사진을 수신할 수 있습니다. 그러면 작업에서 이 정보를 사용하여 사용자에게 시스템에 Google 계정이 있는지 확인할 수 있습니다. 그렇지 않은 경우 작업은 사용자에게 Google 프로필 정보를 기반으로 시스템에서 새 계정을 만들 것인지 묻습니다.

다음 중 하나라도 해당되는 경우 GSI가 권장되는 계정 연결 솔루션입니다.

  • 기존 인증 시스템이 없거나 모든 사용자에게 Google 계정이 있어야 합니다. 예를 들어 작업이 특별히 어시스턴트를 타겟팅하는 경우 모든 사용자가 Google 계정을 가지고 있을 것으로 예상할 수 있습니다.
  • 기존 인증 시스템이 있으며 Google 계정을 사용하여 시스템에 로그인한 사용자만 연결하려고 합니다.

GSI가 적합한 솔루션인지 확인하려면 계정 연결 유형 선택 페이지를 참고하세요.

핵심 용어

GSI의 작동 방식에 관해 읽기 전에 다음 용어를 숙지하세요.

  • Google ID 토큰: 사용자의 기본 Google 프로필 정보 (이름, 이메일 주소, 프로필 사진)를 포함하는 사용자 ID의 서명된 어설션입니다. 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: 현재 세션의 사용자에게 연결된 ID가 있는지 나타내기 위해 시스템에서 설정한 속성입니다.

  • 계정 연결 시스템 장면: 계정 연결을 위한 확인 흐름을 구현하는 사전 정의된 장면이며 특정 사용 사례에 맞게 맞춤설정할 수 있습니다.

사용 방법

GSI의 기본 흐름은 다음과 같습니다.

  1. 작업이 사용자에게 Google 프로필에 액세스하는 데 동의를 요청합니다.
  2. 사용자가 동의하면 작업이 사용자의 Google 프로필 정보가 포함된 Google ID 토큰을 수신합니다.
  3. 토큰의 유효성을 검사하고 디코딩하여 프로필 콘텐츠를 읽습니다. Node.js용 Actions on Google 처리 라이브러리를 사용하면 토큰의 유효성을 검사하고 디코딩합니다.
  4. 작업이 이 토큰을 사용하여 사용자의 Google 프로필 정보가 시스템에 있는지 확인합니다.

    1. 데이터가 표시되면 사용자가 이미 Google 계정으로 시스템에 로그인한 것입니다. 사용자는 Google 계정에 연결된 ID를 사용하여 어시스턴트와 계속 대화할 수 있습니다.
    2. 그렇지 않으면 사용자는 Google ID 토큰에 포함된 정보로 시스템에서 새 계정을 만들 수 있습니다. 그런 다음 사용자는 새 계정을 연결한 상태에서 어시스턴트와 대화를 계속할 수 있습니다.

Google 로그인 흐름

이 섹션에서는 Google 로그인에서 발생할 수 있는 다양한 흐름을 설명합니다.

흐름 1: 사용자 정보가 시스템에 존재함

다음 다이어그램은 사용자 정보가 이미 시스템에 존재할 때 GSI에서 발생하는 엔드 투 엔드 흐름을 보여줍니다.

이 경우 계정 연결 시스템 장면으로 전환하고 맞춤설정된 근거를 제공합니다. 이 장면에서는 사용자에게 Google 프로필 정보에 액세스할 수 있는 권한을 요청합니다.

사용자가 동의하면 어시스턴트는 user@gmail.com의 프로필 정보가 포함된 요청을 전송합니다. 이 경우 user@gmail.com의 Google ID 토큰에 포함된 정보가 시스템의 계정과 일치하므로 작업의 사용자 ID가 자동으로 계정에 연결됩니다. 그러면 웹훅이 데이터베이스에서 사용자의 평소 순서를 읽고 적절하게 응답할 수 있습니다.

흐름 2: 사용자 정보가 시스템에 존재하지 않음

다음 다이어그램은 사용자 정보가 시스템에 없을 때 GSI에서 발생하는 엔드 투 엔드 흐름을 보여줍니다.

이 경우 user@gmail.com의 Google ID 토큰에 포함된 정보가 시스템의 계정과 일치하지 않으므로 어시스턴트는 사용자에게 새 계정을 만들 것인지 묻습니다. 사용자는 선택된 기기로 전송하는 대신 음성으로 계정 생성 프로세스를 완료할 수 있습니다.

사용자가 계정 만들기에 동의하면 서비스가 ID 토큰의 정보 (사용자 이름 및 이메일 주소)를 사용하여 사용자의 계정을 만듭니다. 계정이 생성되면 작업의 사용자 ID가 새 Google 계정에 연결됩니다.

이 경우 사용자는 서비스를 처음 사용하기 때문에 일반적인 주문이 없으므로 작업이 무엇을 주문할지 묻습니다. 사용자에게 일반적인 순서로 가장 최근 주문을 설정하고 싶은지 물어볼 수도 있습니다.