Alexaスキルにおけるユーザーのアカウントリンク体験
このトピックでは、ユーザーから見た一般的なアカウントリンクエクスペリエンスと、その背後で何が起こっているかについて紹介します。例では、ユーザーが配車を依頼する「タクシー予約」という架空のカスタムスキルを使います。
アカウントリンクの概念については、Alexaスキルにおけるアカウントリンクの概念を参照してください。アプリ間アカウントリンクの特殊なケースについてはここでは説明しません。アプリ間アカウントリンクを参照してください。
ユーザーがスキルにアカウントリンクが必要かどうかを確認する方法
デフォルトでは、ユーザーはアカウントリンクフローを開始せずにスキルを有効にできます。このコンフィギュレーションでは、ユーザーがスキルを簡単に有効にでき、認証が不要な機能を利用できます。たとえば、タクシー予約ではアカウントリンクをしなくても、特定の目的地までどれくらい時間がかかるかをたずねることができます。また、ユーザーがスキルを有効にする際にアカウントリンクを行うよう求めることもできます。
Alexaアプリのスキル詳細ページでは、次のようにアカウントリンクが必須か任意かを示します。
アカウントリンクのユーザーエクスペリエンス
ユーザーがAlexaアプリからスキルのアカウントリンクフローを開始するには、3つの方法があります。 1)スキルを有効にする際、2)スキルを有効にした後のスキルの設定から、3)ユーザーが認証が必要な機能を使用しようとしたときにスキルがAlexaアプリに送信するアカウントリンクカードから、の3つです。次の例は、各ケースのユーザーフローと、セットアップしたアカウントリンクのコンポーネントとAlexaアプリの連携について示しています。
Alexaアプリでスキルを有効にするには、スキルの詳細ページで有効にして使用するボタンを選択します。スキルにアカウントリンクが必要な場合、ユーザーは以下の例のようなアカウントリンクフローに移動します。
|
ユーザーは、スキルの詳細ページから有効にして使用するを選択してアカウントリンクプロセスを開始します。
|
Alexaアプリはスキルの認証画面のURIを開きます。
|
|
ユーザーは表示されたタクシー予約ログインページから、タクシー予約認証情報でログインします。
|
Alexaが認証画面のURIを使ってアクセスしたタクシー予約の認可サーバーが、Alexaアプリ内にログインページを表示します。このページがユーザーのタクシー予約認証情報を受け取ります。
|
|
ユーザーは、タクシー予約の利用規約を確認し、同意します。
|
ユーザーが正常にログインしてすべての利用規約に同意したら、タクシー予約の認可サーバーは認可コードを生成してAlexaに返します。この認可コードにより、Alexaはアクセストークンをリクエストします。アクセストークンは最終的に、Alexaがユーザーのタクシー予約データにアクセスするのに必要なものです。
|
|
ユーザーがAlexaアプリに戻ると、ログイン成功のページが表示されます。
|
タクシー予約の認可サーバーはユーザーをAlexaのリダイレクト先のURLにリダイレクトし、クエリ文字列に認可コードをセットして渡します。Alexaは、タクシー予約のアクセストークンURIを開いてアクセストークンを取得します。
|
|
ユーザーが「アレクサ、タクシー予約を開いて配車を依頼して」と言います。
|
AlexaはスキルにLaunchRequest リクエストを送信し、リクエストにアクセストークンを含めます。
スキルはリクエストからアクセストークンを抽出し、アクセストークンを検証し、タクシー予約のリソースサーバーの呼び出しでアクセストークンを使用します。ユーザーデータはこのリソースサーバーに含まれます。アクセストークンの抽出と使用の方法については、GitHubのアカウントリンクサンプルスキルを参照してください。
|
ユーザーが有効にしたスキルを実行し、ユーザーがまだアカウントをリンクしていないのにアカウントリンクが必要な機能を使用しようとした場合に、スキルはAlexaアプリにアカウントリンクカードを送信できます。以下は、ユーザーが音声でスキルを有効にしたときに開始するアカウントリンクフローの例です。
|
ユーザーが「アレクサ、タクシー予約を有効にして」と言います。
|
AlexaがスキルにLaunchRequest リクエストを送信します。リクエストにはアクセストークンが含まれていません。
|
|
Alexaが(スキル経由で)「タクシー予約へようこそ! 配車を依頼するには、Amazonアカウントとタクシー予約アカウントをリンクする必要があります。Alexaアプリに送った手順を確認してください。」と言います。
|
スキルはリクエストからアクセストークンを抽出しようとしますが、何もありません。スキルがAlexaに応答する際、応答には読み上げテキストとアカウントリンクカードが含まれます。
|
|
Alexaがアカウントリンクカードを表示し、ユーザーがアカウントをリンクを選択します。
|
Alexaアプリはスキルの認証画面のURIを開きます。
|
|
ユーザーは表示されたタクシー予約ログインページから、タクシー予約認証情報でログインします。
|
Alexaが認証画面のURIを使ってアクセスしたタクシー予約の認可サーバーが、Alexaアプリ内にログインページを表示します。このページがユーザーのタクシー予約認証情報を受け取ります。
|
|
ユーザーは、タクシー予約の利用規約を確認し、同意します。
|
ユーザーが正常にログインしてすべての利用規約に同意したら、タクシー予約の認可サーバーは認可コードを生成してAlexaに返します。この認可コードにより、Alexaはアクセストークンをリクエストします。アクセストークンは最終的に、Alexaがユーザーのタクシー予約データにアクセスするのに必要なものです。
|
|
ユーザーがAlexaアプリに戻ると、ログイン成功のページが表示されます。
|
タクシー予約の認可サーバーはユーザーをAlexaのリダイレクト先のURLにリダイレクトし、クエリ文字列に認可コードをセットして渡します。Alexaは、タクシー予約のアクセストークンURIを開いてアクセストークンを取得します。
|
|
ユーザーが「アレクサ、タクシー予約を開いて配車を依頼して」と言います。
|
AlexaはスキルにLaunchRequest リクエストを送信し、リクエストにアクセストークンを含めます。
スキルはリクエストからアクセストークンを抽出し、アクセストークンを検証し、タクシー予約のリソースサーバーの呼び出しでアクセストークンを使用します。ユーザーデータはこのリソースサーバーに含まれます。アクセストークンの抽出と使用の方法については、GitHubのアカウントリンクサンプルスキルを参照してください。
|
スキルがアプリ間のアカウントリンクをサポートする場合、ユーザーはAlexaアプリの代わりにアプリからアカウントリンクフローを開始できます。詳細については、アプリ間アカウントリンクを参照してください。