音楽スキルでアクセストークンを検証して使用する



ユーザーがアカウントリンクの必要な音楽スキルを有効にして、自分のAlexaアカウントを認可システムにリンクすると、Alexaからスキルに送信されるAPIリクエストに、そのユーザーのアクセストークンaccessToken)が含まれるようになります。スキルコード(AWS Lambda関数)にロジックを追加してアクセストークンを検証した後、そのトークンを使って、リソースサーバーにあるユーザー情報にアクセスします。

リクエストからアクセストークンを取得する

Alexaがスキルに送信するAPIリクエストには、ユーザーについての情報が入ったRequestContextオブジェクトが含まれます。userオブジェクトには、システムでのユーザー認証に使用するアクセストークンが含まれます。コード例については、音楽スキルAPIコンポーネントリファレンスのRequestContextを参照してください。

スキルコードでは、payload.requestContext.user.accessTokenからトークンを取得します。

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

payload.requestContext.user.accessTokenプロパティが存在する場合、このアクセストークンがリソースサーバーのユーザーを識別していることを確認します。

トークンが有効な場合、リクエストを正常に処理します。このトークンを使い、必要に応じてシステムからデータにアクセスできます。たとえば、ユーザーのサブスクリプションレベルを確認し、リクエストされたコンテンツを利用する資格があるかどうかを判断できます。

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

トークンが無効な場合、以下の理由が考えられます。

  • スキルの認証システムで、ユーザーが自身のアカウントを削除した場合。たとえば、Alexaユーザーが音楽スキルとのアカウントリンクを設定した後、サービスから自身のアカウントを削除することがあります。この場合、Alexaがこのユーザーについて送信するトークンは、スキルの認証システムには存在しません。
  • トークンが期限切れで、Alexaサービスが新しいトークンを取得できない場合。これは、認可システムが更新トークンを提供しない場合に発生します。

トークンが無効の場合、typeに以下のいずれかの値を設定してエラー応答を返します。

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

OAuthのリソース:

その他のリソース: