Google 로그인 개념 가이드 (Dialogflow)

어시스턴트용 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"
}
  • 계정 로그인 도우미 인텐트:어시스턴트에서 계정 연결 흐름을 요청하기 위해 호출하는 도우미 인텐트입니다. 자세한 내용은 계정 로그인을 참고하세요.
    • 컨텍스트 문자열: 계정 로그인 도우미 인텐트에 추가되는 맞춤설정된 문자열로, 사용자에게 계정을 연결해야 하는 이유를 알려줍니다.

사용 방법

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에서 발생하는 엔드 투 엔드 흐름을 보여줍니다.

이 경우 맞춤설정한 컨텍스트 문자열을 사용하여 actions.intent.SIGN_IN 도우미 인텐트를 호출합니다. 이 인텐트는 사용자에게 Google 프로필 정보에 액세스할 수 있는 권한을 요청합니다.

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

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

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

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

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

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