スマートホーム、ビデオ、会議スキルコードでアクセストークンを検証して使用する

スマートホーム、ビデオ、会議スキルコードでアクセストークンを検証、使用する

ユーザーがスマートホーム、ビデオまたは会議スキルを有効にしてAlexaアカウントをデバイス制御クラウドにリンクしたら、スキルに送信されるリクエストにはユーザーのアクセストークン(token)が含まれるようになります。スキルのサービスに、トークンを検証してリソースサーバーにあるユーザーのデバイスに関する情報へのアクセスに使用する処理を追加します。

ディレクティブからアクセストークンを取得する

スキルがAlexaからディレクティブを受信するとき、ディレクティブにはscopeを含むendpointセクションが含まれます。スコープには、システムでのユーザー認証に使用するベアラートークンが含まれます。

以下は、ベアラートークンを含むエンドポイントの例です。

"endpoint": {
    "scope": {
        "type": "BearerToken",
        "token": "access-token-from-skill"
    },
    "endpointId": "appliance-001",
    "cookie": {}
},

endpoint.scope.tokenからトークンを取得します。

トークンが有効なことを確認する

tokenを取得したら、リソースサーバーのユーザーを識別することを確認します。トークンが無効とみなされる理由はさまざまです。以下はその例です。

  • ユーザーがサービスでアカウントを削除またはキャンセルした場合。たとえば、Alexaユーザーがマイライトでアカウントリンクをセットアップしてから、マイライトアカウントをキャンセルした場合などです。この時点で、Alexaサービスが保存したトークンは、存在しないユーザーを識別することになります。
  • トークンの有効期限が切れ、Alexaサービスが新しいトークンを取得できなかった場合。これは、認可サーバーが更新トークンを提供しない場合のAuthorization code grantで発生する可能性があります。

トークンが有効な場合、リクエストを正常に処理します。トークンを使い、必要に応じてリソースサーバーからデータにアクセスできます。マイライトの例では、スキルはデバイス制御クラウドにアクセスし、ユーザーがリクエストしたディレクティブに基づいて適切なアクションを実行します。たとえば、ユーザーがTurnOnディレクティブを呼び出す場合、スキルはデバイス制御クラウドに接続して照明をオンにします。

トークンが無効または期限切れの場合にユーザーに応答する

アクセストークンが無効の場合、typeに以下のいずれかの値を設定してErrorResponseを返します。

  • EXPIRED_AUTHORIZATION_CREDENTIAL(期限切れのトークンの場合)
  • INVALID_AUTHORIZATION_CREDENTIAL(無効なトークンの場合)