その他のプラットフォームおよびデバイス向けのコードベースのリンク
Alexa Voice Service (AVS)にアクセスするには、Alexaが使えるデバイスでLogin with Amazon (LWA)のアクセストークンを取得する必要があります。デバイスは、このアクセストークンをリクエストのたびにAVSに送信します。ここでは、コードベースのリンク(CBL)について説明します。コードベースのリンクとは、テレビやスマートウォッチといった文字入力が制限される、あるいは文字入力の手段を持たない製品に最適な認可方法です。
製品の登録中、ユーザーは英数字の短いコードとURLを受け取ります。ブラウザーにアクセスできる別のデバイスでそのURLにアクセスし、Amazonの認証情報を使ってログインします。受け取ったコードを入力することで、Alexaが使えるデバイスをAmazonアカウントにリンクさせます。リンクが完了すると、製品にスプラッシュ画面が表示され、AVSにアクセスできるようになります。
- 認可のフロー
- ステップ1: CBLを有効化
- ステップ2: デバイス認可をリクエスト
- ステップ3: ユーザーにログインを指示
- ステップ4: デバイストークンをリクエスト
- ステップ5: リフレッシュトークンを渡して新しいアクセストークンを取得
- リソース
認可のフロー
以下の図は、AVSで使用するaccess_token
とrefresh_token
を取得するためにAlexaが使えるデバイスとLWAとの間で行われるやり取りを示しています。

ステップ1: CBLを有効化
- Alexaダッシュボードにログインし、「Alexa Voice Service」を選択します。
- 「管理する」をクリックして既存の製品でCBLを有効にするか、または
- 「製品を作成する」をクリックして新しい製品を作成します。
- 「セキュリティプロファイル」タブに移動し、「他のデバイスやプラットフォーム」を選択します。
- 「クライアントID名」を入力し、「IDを生成」をクリックします。
- 後で使用するため、クライアントIDは保存しておきます。

ステップ2: デバイス認可をリクエスト
まず、Alexaが使えるデバイスがPOST
リクエストを行い、LWAからユーザーコードとURLを取得する必要があります。有効なレスポンスが返された場合、ユーザーにuser_code
とverification_uri
が表示されます。
リクエスト
エンドポイント: https://api.amazon.com/auth/O2/create/codepair
リクエストには以下のパラメーターを含める必要があります。
response_type
: 期待値はdevice_code
です。このパラメーターにより、サービスにCBLリクエストであることを伝えます。client_id
: ステップ1で作成したクライアントIDです。scope
: 期待値はalexa:all
です。製品に付与するパーミッションを指定します。scope_data
:productID
やdeviceSerialNumber
といった製品固有の情報を含む追加のJSONデータです。以下は、JSONのサンプルです。productID
: 製品のデバイスタイプIDです。この情報にアクセスするには、Amazon開発者コンソールに移動します。ログインしたら、「ALEXA」をクリックし、Alexa Voice Serviceの「始める >」をクリックします。登録された製品の横にある「管理する」をクリックする(または、新しい製品を作成する)と、製品のクライアントIDとクライアントシークレットが表示されたページに移動します。productInstanceAttributes
:deviceSerialNumber
を含むオブジェクトです。deviceSerialNumber
: 製品のこのインスタンスを一意に識別するキーです。たとえば、シリアルナンバーやMACアドレスなどです。
メモ: 以下は、URLエンコードされる前のscopeオブジェクトのサンプルです。{ "alexa:all": { "productID": "{{productId}}", "productInstanceAttributes": { "deviceSerialNumber": "{{deviceSerialNumber}}" } } }
オプション: リクエストにAccept-Language
ヘッダーを含めると、ユーザーがログインと登録に使用する言語を選択できます。
- 有効な値:
en-US
、de-DE
、es-ES
、en-GB
、fr-FR
、it-IT
、pt-BR
、ja-JP
、zh-CN
サンプルリクエスト
以下は、curlで記述したリクエストのサンプルです。
curl -k -d 'response_type=device_code&client_id={{client_id}}&scope=alexa%3Aall&scope_data=%7B%22alexa%3Aall%22%3A%7B%22productID%22%3A%22Speaker%22,%22productInstanceAttributes%22%3A%7B%22deviceSerialNumber%22%3A%2212345%22%7D%7D%7D' -H "Content-Type: application/x-www-form-urlencoded" -X POST https://api.amazon.com/auth/O2/create/codepair
レスポンス
レスポンスは、OAuth仕様のセクション3.4に従ってフォーマットされます。入力内容が有効な場合、レスポンスは以下のように構成されます。
サンプルレスポンス
{ "user_code": "{{STRING}}", "device_code": "{{STRING}}", "verification_uri": "{{STRING}}", "expires_in": {{INTEGER}}, "interval": {{INTEGER}} }
パラメーター | 説明 | 型 |
---|---|---|
user_code | ユーザーに表示されるコードです。ユーザーは登録時にこのコードを入力します。 | string |
device_code | デバイストークンリクエストの実行時に必要なコードです。この値は公開しないようにする必要があります。 | string |
verification_uri | ユーザーに表示されるURLです。 | string |
expires_in | コードの有効期間(秒)です。 | integer |
interval | デバイストークンリクエストを行う間隔(秒)です。 | integer |
エラー
HTTP 400: MissingValue
HTTP 500: ServiceError
HTTP 503: ServiceUnavailable
ステップ3: ユーザーにログインを指示
製品がデバイス認可リクエストへのレスポンスを受け取ったら、ユーザーに対してuser_code
とverification_uri
を表示する必要があります。セットアップと認証に記載されているデザインのガイダンスと画面の例を参照してください。
verification_uri
に移動すると、ユーザーは、Amazon開発者認証情報でログインして提供されたuser_code
を入力するよう指示されます。コード登録ページは、OAuthの仕様であるユーザーへの指示コンポーネントを実装しています。

user_code
を入力すると、ユーザーは認証の成功または失敗を示すページにリダイレクトされます。認証に失敗した場合、ページにはその理由が表示されます(すでに認可済みのコード、認識できない、コードなど)。
ステップ4: デバイストークンをリクエスト
ユーザーにログインするよう指示したら、製品はaccess_token
とrefresh_token
のポーリングを開始します。
リクエスト
エンドポイント: https://api.amazon.com/auth/O2/token
リクエストには以下のヘッダーを含める必要があります。
POST /auth/o2/token Host: api.amazon.com Content-Type: application/x-www-form-urlencoded
リクエストには以下のパラメーターを含める必要があります。
grant_type
: 期待値はdevice_code
です。サービスにgrant種別を伝えます。device_code
: デバイス認可リクエストで返されるコードです。user_code
: ユーザーに表示されるコードです。ユーザーは登録時にこのコードを入力します。
レスポンス
ユーザーが登録フローを完了したら、以下の構造でレスポンスが返されます。
{ "access_token": "{{STRING}}", "refresh_token": "{{STRING}}", "token_type": "bearer", "expires_in": {{INTEGER}} }
access_token
: アクセストークン。refresh_token
: リフレッシュトークン。token_type
: ベアラー。expires_in
: アクセストークンの有効期間(秒)。
authorization_pending
、slow_down
、invalid_code_pair
、invalid_client
、unauthorized_client
。invalid_code_pair
が返された場合は、登録フローをやり直します。ステップ5: リフレッシュトークンを渡して新しいアクセストークンを取得
アクセストークンの有効期限が切れた(または間もなく切れる)ときは、リフレッシュトークンを渡して新しいアクセストークンを取得します。POST
リクエストを行い、https://api.amazon.com/auth/O2/token
に、これらのパラメーターを組み込んで作成したURLを渡します。
grant_type
:refresh_token
。refresh_token
: リフレッシュトークン。client_id
: クライアントID。
レスポンスには以下の値が含まれます。
access_token
: アクセストークン。refresh_token
: リフレッシュトークン。token_type
:bearer
。expires_in
: アクセストークンの有効期限が切れるまでの残り時間(秒)。