開発する公開コンパニオンサイトからの認可コンパニオンサイトからの認証このガイドは、ウェブサイトを使用してユーザーの認証を行う製品メーカー向けです。ユーザーがコンパニオンアプリを使用して製品を登録する場合は、コンパニオンアプリからの認証を参照してください。API呼び出しを行う新しいアクセストークンを取得するためにリフレッシュトークンを交換する(認証コードグラントのみ)リソース認証のタイプLWAは、以下の2つの認証タイプをサポートしています。クライアントIDが送信され、アクセストークンが返されます。クライアント側のスクリプトに依存するため、実装が比較的容易です。アクセストークンの期限が切れると、ユーザーは1時間ごとに再認証する必要があります。クライアントIDとクライアントシークレットが送信され、アクセストークンとリフレッシュトークンが返されます。安全で、リフレッシュトークンを使用して無期限で新しいアクセストークンをリクエストします。サーバー側でのスクリプト記述が必要なため、実装が難しいです。サーバー側のスクリプト記述が可能なら、認証コードグラントを使用することをお勧めします。認証フローこの図は、コンパニオンサイトを使用してアクセストークンを取得するデータフローを示しています。製品をウェブサービスに登録します。登録時には、デバイスのシリアル番号(DSN)および製品IDなど、製品に関する情報を含める必要があります。ユーザーがコンパニオンサイトに移動し、Loginをクリックします。クリックすると、ユーザーはLWAにリダイレクトされます。Amazonの承諾リクエストを作成するを参照してください。ユーザーに対して、Amazon認証情報を入力して、自身の代わりに製品がAVSと対話できるようアクセスを付与するようプロンプトが提示されます。ユーザーはリダイレクトされてコンパニオンサイトに戻ります。アクセストークンまたは認証トークンがウェブサービスに送信されます。認証コード、クライアントID、クライアントシークレットがウェブサービスからLWAに送信されます。アクセストークンとリフレッシュトークンがウェブサービスに送信されます。リフレッシュトークン、クライアントID、クライアントシークレットを1時間ごと、または既存のトークンの有効期限が切れそうになったら、交換して新しいアクセストークンを取得します。アクセストークンが安全にウェブサービスから製品に送信されます。Amazonの承諾リクエストを作成するユーザーがコンパニオンサイトのLoginボタンをクリックすると、承諾リクエストが作成されます。ユーザーはLWAウェブサイトにリダイレクトされ、そこでAmazon認証情報を入力して、製品のインスタンスが自身に代わってAVSにアクセスできるよう認証を行います。以下は承諾リクエストの構成方法です。Amazonにリダイレクトします。製品のクライアントID。この情報にアクセスするには、Amazon開発者コンソールに移動します。>」をクリックし、登録した(または新規作成した)製品の隣にある「Edit」をクリックします。Profile」を選択します。このページには、製品のクライアントIDとクライアントシークレットの両方が含まれています。AVSでの権限レベルは1つで、alexa:allです。productIdとdeviceSerialNumberを含むJSON構造体。このタイプの製品の製品タイプIDです。製品タイプIDは、Amazon開発者ポータル上の製品登録プロセスの一環として指定されます。製品の一意の識別子です。シリアルナンバーやMACアドレスなどがあります。以下は、URLエンコードされる前のScopeオブジェクトのサンプルです。LWAから返されると想定される応答のタイプを指定します。(インプリシットグラント)とcode(認証コードグラント)です。開発者ポータルでアプリのセキュリティプロファイルに追加した、返すURIを指定します。リクエストと応答の間の状態を維持するためにクライアントによって使用される参照値。認証サービスには、ユーザーがクライアントにリダイレクトされて戻る際に、この値が含まれます。サイト間のリクエストの偽造を防ぐためにも使用されます。詳細については、サイト間のリクエストの偽造を参照してください。Amazonが登録ウェブサイトに応答を返すユーザーが認証されたら、ユーザーは承諾リクエストで指定されたredirect_uriにリダイレクトされます。インプリシットグラントLWAからの応答にはアクセストークンが含まれます。Atza|...)し、ユーザーの製品に安全に送信します。インプリシットグラントの応答サンプルhttps://localhost:3000/authresponse#access_token=Atza|IwEBIP1l6K6yU9NySgMm&token_type=bearer&expires_in=3600&scope=alexa%3Aall&state=6042d10f-6bcd-49認証コードグラントLWAからの応答には認証コードが含まれます。認証コードグラントの応答サンプルhttps://localhost:3000/authresponse?code=ANEctBuBjzro&scope=alexa%3Aall&state=6042d10f-6bcd-49次に、サービスは返された認証コードを利用して、アクセストークンをリクエストします。以下のパラメーターを指定して、POSTリクエストを、https://api.amazon.com/auth/o2/tokenに送信します。応答で返された認証コードです。製品のクライアントID。この情報にアクセスするには、Amazon開発者コンソールに移動します。>」をクリックし、登録した(または新規作成した)製品の隣にある「Edit」をクリックします。Profile」を選択します。このページには、製品のクライアントIDとクライアントシークレットの両方が含まれています。製品のクライアントシークレット。この情報にアクセスするには、Amazon開発者コンソールに移動します。>」をクリックし、登録した(または新規作成した)製品の隣にある「Edit」をクリックします。Profile」を選択します。このページには、製品のクライアントIDとクライアントシークレットの両方が含まれています。サインアップ時にアプリのセキュリティプロファイルに追加した、返されるURIの1つです。別の方法として、client_idおよびclient_secretを、client_id:client_secretのbase64エンコードとしてAuthorizationヘッダー内で渡すこともできます。その他の情報と例については、アクセストークンリクエストを参照してください。"bearer"}アクセストークンとリフレッシュトークンを安全にユーザーの製品に送信します。API呼び出しを行うアクセストークンは、各リクエストのヘッダーに含まれる必要があります。新しいアクセストークンを取得するためにリフレッシュトークンを交換する(認証コードグラントのみ)アクセストークンの有効期限は1時間です。アクセストークンの有効期限が切れたか、間もなく切れるとき、新しいアクセストークンとリフレッシュトークンを取得するためにリフレッシュトークンを交換できます。以下のパラメーターを指定して、POSTリクエストを、https://api.amazon.com/auth/o2/tokenに送信します。最後に新しいアクセストークンをリクエストしたときに返されたURLエンコードされたリフレッシュトークンです。この情報にアクセスするには、Amazon開発者コンソールに移動します。>」をクリックし、登録した(または新規作成した)製品の隣にある「Edit」をクリックします。Profile」を選択します。このページには、製品のクライアントIDとクライアントシークレットの両方が含まれています。ウェブサイトのクライアントシークレット。この情報にアクセスするには、Amazon開発者コンソールに移動します。>」をクリックし、登録した(または新規作成した)製品の隣にある「Edit」をクリックします。Profile」を選択します。このページには、製品のクライアントIDとクライアントシークレットの両方が含まれています。別の方法として、client_idおよびclient_secretを、client_id:client_secretのbase64エンコードとしてAuthorizationヘッダー内で渡すこともできます。その他の情報と例については、アクセストークンリクエストを参照してください。