スマートホームとビデオのスキルコードでアクセストークンを検証して使用する
ユーザーがスマートホームとビデオのスキルを有効にして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
(無効なトークンの場合)
EXPIRED_AUTHORIZATION_CREDENTIAL
またはINVALID_AUTHORIZATION_CREDENTIAL
エラーコードを送信しないでください。これらのエラーコードを送信すると、ユーザーのアカウントリンクトークンが削除され、Alexa側からユーザーのアカウントとサービスのリンクが解除されます。この場合、ユーザーにとって唯一の手段は、アカウントを再リンクすることです。関連トピック
- クイックリファレンス: Alexaスキルにアカウントリンクを追加する
- Alexaスキルにアカウントリンクを追加する
- Alexaスキルにおけるアカウントリンクの概念
- OAuth 2.0認可フレームワーク(RFC 6749)
- OAuth.com
最終更新日: 2025 年 09 月 19 日