アクションに最適なアカウント リンクタイプは、ユーザー エクスペリエンスが最もシンプルで、アプリケーションやビジネスのニーズに適合するタイプです。リンクタイプの選択は、主に次の要因によって決まります。
- 音声によるアカウントの作成を許可するかどうか
- ユーザーが Google 以外のアカウントでサービスにログインできるようにするかどうか
- サービスが機密情報(クライアント シークレット)を保存できるかどうか
理想的なアカウントのリンクの種類を判断する手順は次のとおりです。
- 優先するログインタイプを特定するセクションの質問を検討してください。
- ディシジョン ツリーを参照して、リンクタイプを選択してください。
- 選択した最初のタイプに対応するセクションに移動して、動作をさらに絞り込みます。
使用するログインタイプを指定する
ディシジョン ツリーを参照する前に、以下の点について検討してください。
- すべてのユーザーが Google アカウントを持っていると思いますか?
- アクションのターゲットがアシスタントのみの場合、すべてのユーザーが Google アカウントを持っていると考えられます。アクションがアシスタント以外のプラットフォームをターゲットにしている場合、すべてのユーザーが Google アカウントを持つとは限りません。
- サービスにすでにユーザーがいる場合、一部のユーザーは Google アカウントを持っていないか、Google アカウントでサービスにログインしていない可能性があります。
- OAuth を実装している場合、Google プロトコルをサポートするように拡張できますか?
- Google プロトコルをサポートするには、トークン交換エンドポイントに
intent=get
機能とintent=create
機能を追加できる必要があります。この機能により、Google はユーザーがバックエンドにすでに存在するかどうかを確認し、サービスで新しいアカウントを作成するようにリクエストできます。
- Google プロトコルをサポートするには、トークン交換エンドポイントに
以下のディシジョン ツリーに沿って、自分とユーザーにとって最適なアカウント リンクのタイプを特定します。
リンクタイプを選択したら、以下の対応するセクションに進んで仕組みの詳細を確認し、アクションでのアカウントのリンクの仕組みを決定します。
OAuth と Google ログイン
OAuth と Google ログイン(GSI)のリンクタイプは、OAuth ベースのアカウント リンクに加えて GSI を追加します。これにより、GSI の利点(Google ユーザー向けの音声ベースのリンクなど)がもたらされるとともに、Google 以外のアカウントでサービスに登録したユーザーもアカウント リンクが可能になります。このリンクタイプは、Google ユーザーにとっては負担の少ないフローで、Google 以外のユーザーもフォールバックできます。そのため、このリンクタイプはエンドユーザーにとって特にメリットがあります。OAuth と GSI のリンクタイプの仕組みについては、OAuth と Google ログインのコンセプト ガイドをご覧ください。
OAuth と Google ログインのリンクタイプを絞り込む
アクションで OAuth と GSI のアカウント リンクタイプを使用する場合は、Actions Console で以下の質問への回答を指定して、その動作を定義します。
ウェブサイトでのアカウントの作成のみを許可しますか?
通常は、音声によるアカウント作成を有効にして、審査されていないデバイスのユーザーが別のデバイスに転送しなくてもアカウントを作成できるようにしてください。音声によるアカウントの作成を許可しない場合、アシスタントはユーザー認証用に指定したウェブサイトの URL を開き、ユーザーをスマートフォンに誘導して、アカウントのリンクフローを続行します。
ただし、次のいずれかに該当する場合は、音声によるアカウントの作成を許可しないでください。
- アカウント作成フローを完全に制御する必要がある。たとえば、アカウントの作成時やその他の種類の通知の際に、利用規約をユーザーに表示する必要があります。
- すでにアカウントを持っているユーザーがそのアカウントでログインするようにします。たとえば、ポイント プログラムを提供していて、アカウントで獲得したポイントが失われないようにするには、ユーザーが既存のアカウントを引き続き使用できるようにすることをおすすめします。
認可コードフローと暗黙的フローのどちらを使用するか
認可コードフローと暗黙的フローは、認可コードフローが 2 つ目のエンドポイント(トークン交換エンドポイント)を必要とする点で異なります。このエンドポイントは、更新トークンを使用して、ユーザーに再ログインを要求せずに有効期間の短い新しいアクセス トークンを生成します。
逆に、暗黙的フローを使用すると、有効期間の長いアクセス トークンが Google に返されますが、通常は再生成する必要はありません。認証コードと暗黙的フローの詳細については、OAuth と Google ログインのコンセプト ガイドをご覧ください。
アクションはより安全であるため、認可コードフローを使用することをおすすめします。ただし、サービスで機密情報(クライアント シークレット)を保存できない場合は、代わりに暗黙的フローを使用してください。たとえば、シングルページ アプリケーション(SPA)などの公開クライアントには、暗黙的フローを使用する必要があります。
上記の決定ポイントを検討したら、次のディシジョン ツリーを参照してください。
Google ログイン
GSI リンクタイプでは、アクションは会話中にユーザーの Google プロフィールへのアクセスをリクエストし、プロフィール情報を使用して、ユーザーがサービスのバックエンドに存在するかどうかを確認できます。ユーザーが存在しない場合は、Google プロフィール情報を使用してシステムに新しいアカウントを作成できます。
GSI では、音声によるアカウントの作成を有効にする必要があります。これにより、ユーザーは音声でフローを完了できるようになります。GSI について詳しくは、Google ログインのコンセプト ガイドをご覧ください。
OAuth
OAuth リンクタイプの場合、ユーザーは標準の OAuth 2 フローでログインします。OAuth リンクタイプは、業界標準の OAuth 2.0 フロー(暗黙的なコードフローと認可コードフロー)の 2 つをサポートしています。
OAuth リンクタイプ自体はおすすめしません。ユーザーがスクリーニングされていないデバイスを使用している場合、ログイン プロセスを完了するために、ユーザーを音声から画面へ転送する必要があるためです。OAuth 2 サーバーの既存の実装があり、ID トークンからの自動リンクとアカウント作成のための Google のプロトコルをサポートするようにトークン交換エンドポイントを拡張できない場合は、このフローの使用を検討してください。詳細については、OAuth のコンセプト ガイドをご覧ください。
フローを改善する
アクションで OAuth アカウント リンクタイプを使用する場合は、Actions Console で次の質問への回答を指定して、その動作を定義する必要があります。
認可コードフローと暗黙的フローのどちらを使用するか
OAuth リンクタイプは、業界標準の OAuth 2.0 フロー(暗黙的なコードフローと認可コードフロー)の 2 つをサポートしています。認可コードフローと暗黙的フローでは、認可コードフローでは 2 つ目のエンドポイントであるトークン交換エンドポイントが必要になります。このエンドポイントは、更新トークンを使用して、ユーザーに再ログインを要求せずに有効期間の短い新しいアクセス トークンを生成します。
逆に、暗黙的フローを使用すると、有効期間の長いアクセス トークンが Google に返されますが、通常は再生成する必要はありません。認可コードと暗黙的フローの詳細については、OAuth のコンセプト ガイドをご覧ください。
アクションはより安全であるため、認可コードフローを使用することをおすすめします。ただし、サービスで機密情報(クライアント シークレット)を保存できない場合は、代わりに暗黙的フローを使用してください。たとえば、シングルページ アプリケーション(SPA)などの公開クライアントには、暗黙的フローを使用する必要があります。