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

ユーザーが正常にスマートホームスキル、ビデオスキル、会議スキルを有効にし、Alexaアカウントをデバイス制御クラウドにリンクすると、スキルに送信されたリクエストには、ユーザーのアクセストークンtoken)が含まれます。トークンを識別するには、ロジックをスキルのサービスに追加し、次にこれをリソースサーバーのユーザーのデバイスについての情報にアクセスするために使用します。

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

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

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

"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(無効なトークンの場合)

OAuthのリソース:

その他のリソース: