Google ログインのコンセプト ガイド(Dialogflow)

アシスタント用の Google ログイン(GSI)は最もシームレスなリンクを実現する デベロッパーにとって最も簡単なフローです。 GSI を使用すると、作成中にアクションがユーザーの Google プロフィールへのアクセスをリクエストできます。 会話を受信し、ユーザーが同意した場合は、ユーザーの名前、メールアドレス、 プロフィール写真が表示されます。アクションはこの情報を使用して、 システム内の Google アカウントをユーザーが持っているかどうか。そうでない場合、アクションはユーザーに Google アカウントに基づいてシステムで新しいアカウントを作成することを プロフィール情報

次のいずれかに該当する場合は、GSI がおすすめのアカウント リンク ソリューションとなります。

  • 既存の認証システムがない、またはすべての ユーザーが Google アカウントを持つようにできます。たとえば、アクションが すべてのユーザーは Google アシスタントを できます。
  • 既存の認証システムがあり、 ユーザーの Google アカウントを使用してシステムにログインしました。

GSI が適切なソリューションであることを確認するには、 アカウントのリンクの種類を選択するページ。

主な用語

GSI の仕組みを読む前に、次の用語を理解しておいてください。

  • Google ID トークン: 以下を含むユーザー ID の署名付きアサーション ユーザーの基本的な Google プロフィール情報(名前、メールアドレス、 プロフィール写真など)。Google ID トークンとは、 JSON Web Token (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 ID トークンを受け取ります。 には、ユーザーの Google プロフィール情報が含まれます。
  3. トークンを検証してデコードし、プロファイルのコンテンツを読み取る。「 Node.js 用の Actions on Google クライアント ライブラリ、または Java クライアント ライブラリ トークンの検証とデコードが行われます。
  4. アクションはこのトークンを使用して、ユーザーの Google プロフィールが 検出できます。

    1. 表示される場合、ユーザーは Google アカウント。ユーザーは会話を継続でき、 ID が Google アカウントにリンクされたアシスタント。
    2. 関連付けられていない場合、ユーザーは Google ID トークンに含まれる情報。ユーザーは 新しいアカウントをリンクしてアシスタントと会話を続ける。

Google ログインフロー

このセクションでは、Google ログインで発生する可能性のあるさまざまなフローについて説明します。

フロー 1: ユーザーの情報がデベロッパーのシステムに存在する

次の図は、コンテナがデプロイされたときに GSI で発生するエンドツーエンドのフローを ユーザーの情報がシステムにすでに存在している場合:

この例では、actions.intent.SIGN_IN ヘルパー インテントを 使用します。このインテントはユーザーに権限を求めます。 Google プロフィール情報にアクセスする。

ユーザーが同意すると、アシスタントは user@gmail.com のプロフィール情報。この場合、 user@gmail.com の Google ID トークンに含まれるものが、次のアカウントと一致: ユーザーの ID が自動的にリンクされるため、 そのアカウントにリンクしますこれで Webhook はユーザーの通常の注文を それに応じて対応できます

フロー 2: ユーザーの情報がシステムに存在しない

次の図に、GSI が実行時に発生するエンドツーエンドのフローを示します。 ユーザーの情報がシステムに存在しない場合:

この場合、Google ID トークンに含まれる情報は、 user@gmail.com はシステム内のアカウントと一致しないため、アシスタントは 新しいアカウントを作成するかどうかを確認するメッセージが表示されます。ユーザーは 音声によるアカウント作成プロセスを スクリーニングします。

ユーザーがアカウントの作成に同意すると、サービスはその情報を使用して ユーザーの名前とメールアドレスを入力して、ID トークンの できます。アカウントが作成されると、アクションでユーザーの ID が 新しい Google アカウントにリンクされました。

この場合、ユーザーは初めて注文するので、通常の注文ではありません。 注文したいものをアクションから質問されます。マイページ また、直近の注文を設定するかどうかをユーザーに尋ねることもできます。 届きます。