スマートホーム、ビデオ、会議スキルコードでアクセストークンを検証して使用する
Note: Submit your skill and see it come to life.
スマートホーム、ビデオ、会議スキルコードでアクセストークンを検証、使用する
ユーザーがスマートホーム、ビデオまたは会議スキルを有効にして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
(無効なトークンの場合)