ServiceAlexa開発者フォーラムAlexaデザインガイドAlexaスキルマーケティングガイドラインカスタムスキルのアカウントリンク﻿﻿カスタムスキルの中には、ユーザーのIDと別のシステムのユーザーアカウントを結び付ける機能が必要なものもあります。この機能を、「アカウントリンク」と呼びます。Alexaユーザーとシステムのユーザーアカウント間でリンクを作成することを目的としているためです。このドキュメントでは、特にカスタムスキルに関するアカウントリンクの概要について説明します。詳細をご覧になりたい場合は以下をご参照ください。grantを設定するカスタムスキルコードでアクセストークンを検証して使用するスマートホームやビデオなど、別のモデルを使用するスキルの場合、スマートホームなどのドメインのアカウントリンクを参照してください。関連トピックアカウントリンクを使用する場合ユーザーのAlexaアカウントを別のシステムのアカウントに結び付けて、そのシステムからパーソナライズした情報を取得する必要がある場合、カスタムスキルでアカウントリンクを使用します。例:スキルを実行しているサービスに接続します。2.0をサポートするサードパーティサービスに接続します。アカウントリンクが必要かどうか確認する認証の必要なシステムにスキルを接続するには、アカウントリンクが必要です。スキルでセッション間のアトリビュートを保存するためにユーザーをトラッキングをするだけの場合は、ユーザーを識別する各リクエストのuserIdを使用できます。指定したユーザーのuserIdは、ユーザーがAlexaアプリでスキルを有効にしたときに生成されます。ユーザーがスキルを無効にしない限り、そのユーザーからスキルへの後続のすべてのリクエストには同じuserIdが含まれます。Node.js、Java、およびPythonに組み込まれています。SDKドキュメントを参照してください。ユーザーアトリビュートの保持に関するサンプルスキルについては、ハイ&ローゲームを参照してください。ユーザーのアカウントをリンクする方法アカウントリンクを開始するには、以下の2つのうちいずれかの方法を使用します。スキルを有効にして、Alexaアプリのスキルの詳細ページから開始します。認証の必要なリクエストを行った後にAlexaアプリのアカウントリンクカードから開始します。この方法を使えば、柔軟にアカウントをリンクできます。ユーザーがスキルを有効にするときにアカウントリンクを省略した場合でも、認証の必要なリクエストを行った後にアカウントリンクできます。ユーザーがアプリ内からアカウントリンクを開始できるように実装することもできます。詳細については、アプリ間アカウントリンクを参照してください。カスタムスキルのアカウントリンクも任意で設定することができます。基本機能を認証なしで提供した後で、認証を必要とする高度な機能を提供することもできます。この方法でスキルを設定すると、ユーザーがスキルを有効にしたときにはアカウントリンクのフローが表示されません。このオプションの詳細については、ユーザーがアカウントリンクなしでスキルを有効にするを参照してください。いずれの場合も、スキルへのリクエストにアクセストークン(accessToken)が存在するかどうかで、ユーザーがアカウントリンクを行ったかどうかを判断できます。リクエストからアクセストークンを取得するを参照してください。スキルの詳細ページからアカウントリンクカードからユーザーがアカウントリンクプロセスを完了するスキルの詳細ページからスキルでアカウントリンクが必要な場合、スキルの詳細ページにアカウントリンクが必要であることを表示します。ユーザーが有効にするをクリックすると、Alexaアプリはアカウントリンクプロセスを自動で開始します。スキルを有効にしています。スキルのカードにアカウントリンクが必要である旨、表示されています。ユーザーがアカウントリンクプロセスをキャンセルしてもスキルを有効にできますが、ユーザーが後でアカウントリンクに戻れるよう、スキルのカードに設定ボタンが表示されます。ユーザーがアカウントリンクを完了しなかった場合のスキルの詳細ページアカウントリンクカードからユーザーがスキルを有効にするときにアカウントリンクを省略した場合、またはAlexaアプリではなく音声でスキルを有効にした場合に使用できます。ユーザーがアカウントリンクなしでスキルを有効にするオプションを選択している場合は、ユーザーはスキルを有効にするときにアカウントリンクをスキップできます。ユーザーが認証の必要なリクエストを行った後、スキルはアカウントリンクカード(LinkAccount)を返しユーザーにアカウントを接続するよう指示します。前述のとおり、スキルへのリクエストにアクセストークン(accessToken)が存在するかどうかを確認すると、アカウントリンクが行われていないことがわかります。リクエストからアクセストークンを取得するを参照してください。その後、ユーザーはこのカードからプロセスを開始できます。Alexaアプリのアカウントリンクカードユーザーがアカウントリンクプロセスを完了するユーザーがどの方法でプロセスを開始したかどうかにかかわらず、後の手順は同じです。ユーザーがプロセスを開始したら、アプリには他のサービスのログイン画面が表示されます。ユーザーはログインページで認証情報を入力し、そのサービスを使用して認証します。Alexaアプリの「成功」ページに戻り、スキルが使用できるようになります。アカウントリンクが成功すると、Alexaは他のシステムのユーザーを識別するアクセストークン(他のシステムによって提供されたもの)を格納するようになります。以後このトークンはスキルに対するすべてのリクエストに含まれ、スキルは必要に応じて他のシステムのユーザー情報にアクセスできます。Amazonを使用しているため、AlexaアプリではユーザーにAmazonのログインページが表示されます。Amazon)ユーザーのアカウントがリンクされたら表示される成功メッセージユーザーがスキルと対話するユーザーは通常どおりスキルを呼び出してリクエストを行うことができます。ユーザーのアカウントが正しくリンクされると、リクエストにアクセストークンが含まれるようになります。スキルは他のシステムの情報にアクセスする時に、このトークンを使用します。以下の対話ではタクシー予約スキルがトークンを使ってユーザーのプロフィールを取得しています。プロフィールには支払い情報やデフォルトの勤務場所が含まれます。アレクサ、タクシー予約に「職場まで乗せて」と言って。(スキルに送信されるIntentRequestにはタクシー予約サービスのユーザーを識別する有効なアクセストークンが含まれます。スキルはユーザーのアカウント詳細やデフォルトの場所を取得します。タクシー予約アカウントを使用して車を手配します。ユーザーとスキルの対話が続きます...ユーザーアカウントがリンクされていない場合、リクエストにはアクセストークンが含まれません。スキルはこれを確認し、以下の両方を返します。テキストを読み上げてアカウントリンクのメリットを簡単に説明します。ユーザーがAlexaアプリのアカウントをリンクするのに使用できるアカウントリンクカード。アレクサ、タクシー予約に「職場まで乗せて」と言って。ユーザーがアカウントをまだリンクしていないため、スキルに送信されるIntentRequestには有効なアクセストークンが含まれません。スキルはアカウントリンクカードを使用してリクエストを行う必要があります。車を手配する前に、タクシー予約アカウントでログインする必要があります。Alexaアプリを開いてタクシー予約アカウントをリンクしてください。(この応答には、ユーザーがアカウントリンクプロセスを開始するのに使用できるLinkAccountCardが含まれます。)スキルの対話が終了します。スキルにはシステムのパーソナライズされたデータを必要としないリクエストを含めることができるため、認証は必要ありません。このような’インテントの場合、スキルは通常の応答を返し、ユーザーはアカウントリンクなしでスキルとの対話を続行できます。アレクサ、タクシー予約に仙台で利用可能なサービスを聞いて。CarFuAvailabilityByCityインテントが送信されます。このインテントでは、タクシー予約サービスから公開データを取得し、ユーザーのタクシー予約アカウントにアクセスする必要はありません。そのため、スキルはアクセストークンの有無を確認しないで、応答のみを返します。仙台ではタクシー予約で提供しているすべてのサービスが利用できます。...スキルの対話が続きます...ユーザーがスキルを無効にするユーザーがAlexaアプリでスキルを無効にした場合、Alexaサービスはそのユーザーとスキルに関連付けられたアクセストークンを削除します。これにより、ユーザーのAlexaアカウントとサービスのアカウント間のリンクが削除されます。ユーザーが後でスキルを再度有効にした場合、アカウントリンクプロセスをもう一度開始して、Alexaアカウントとサービスのアカウントとの間の新しいリンクを作成する必要があります。Grant種別をサポートします。grantこれら2つの種別の主な違いは、アクセストークンを認可サーバーから取得する方法です。grantでは、認証サーバーはアカウントリンクプロセス中にユーザーがログインした後でアクセストークンを返します。grantでは、認証サーバーはアカウントリンクプロセス中にユーザーがログインした後で認可コードを返します。Alexaはこのコードを使って、認可サーバーからアクセストークンと更新トークンのペアをリクエストします。Alexaは、古いトークンの期限が切れたら更新トークンを使って新しいアクセストークンと更新トークンのペアをリクエストできます。grantはより安全で堅牢なソリューションのため、可能な限りこちらを使うことをおすすめします。grantをサポートしていない場合のオプションとして使用できます。grantを使用する場合、トークンの有効期限が切れるたびにAlexaアプリでアカウントを再度リンクする必要があるため、快適なユーザーエクスペリエンスとは言えない可能性があります。grantを使用する必要があります。grant種別を設定する方法の詳細については、以下を参照してください。grantを設定するこれらのgrant種別のOAuth仕様については、以下を参照してください。Grantカスタムスキルにアカウントリンクを実装する手順カスタムスキルにアカウントリンクを追加するには、以下を実行します。grantのどちらを使うかを決定します。アカウントリンクセクションでスキルにアカウントリンクを設定します。詳細については、以下のいずれかを参照してください。grantを設定するアカウントリンク処理をスキルのサービスに追加します。スキルコードを使用して受信するリクエストのアクセストークンを確認し、適切な処理を行います。詳細については、カスタムスキルコードでアクセストークンを検証して使用するを参照してください。