Amazon(LWA)のアクセストークンを取得する必要があります。Serviceに送信します。SDKを使用してアクセストークンを取得する方法を説明します。AlexaをAndroidまたはiOSに追加しようとしています。認可して、ユーザーアカウントに関連付ける必要のあるスマートスピーカーなどのヘッドレス端末はありません。コンパニオンサイトからの認可またはコンパニオンアプリからの認可。SDKを使用する下のタブを使用して、オペレーティングシステムを選択してください。AndroidiOSAndroidアプリでLWAを使用するには、下の指示に従います。Amazon開発者ポータルでモバイルアプリを登録し、アプリのAPIキーを生成します。アカウントを作成してアプリを登録する方法については、「AVSスタートガイド」を参照してください。Amazonに移動し、ステップ1、4、および5を実行します。次に、以下のステップを実行して、AVSで使用するLWAアクセストークンを取得します。LWAをAndroidプロジェクトに追加します。Amazonライブラリをインストールするを参照してください。APIをソースファイルにインポートします。APIをインポートするには、以下のimport文をソースファイルに追加します。com.amazon.identity.auth.device.api.workflow.RequestContext;RequestContextを初期化します。RequestContextメンバー変数を宣言し、クラスの新しいインスタンスを作成する必要があります。インスタンスを作成するには、現在のアプリケーションコンテキストをstaticなファクトリーメソッドに渡します。RequestContextは、アクティビティのonCreateメソッド内で初期化することをお勧めします。RequestContext.create(this);}AuthorizeListenerImplを作成します。AuthorizeListener抽象クラスを拡張し、authorize呼び出しの結果を処理します。onSuccess、onError、およびonCancel。onSuccessメソッドに渡されるAuthorizeResultオブジェクトには、アクセストークンが含まれます。}}AuthorizeListenerImplのインスタンスを作成し、登録します。AuthorizeListenerImplのインスタンスを作成し、RequestContextインスタンスに登録します。AuthorizeManager.authorizeの呼び出しが行われると、RequestContextインスタンスは、authorizeリクエストの結果を使用してAuthorizeListenerで適切なコールバックメソッドを呼び出します。AuthorizeListenerImplインスタンスは、onCreateメソッド内に登録することをお勧めします。AuthorizeListenerImpl());}onResumeメソッドをオーバーライドします。アクティビティ内のonResumeメソッドをオーバーライドします。RequestContextインスタンス上で、onResumeメソッドだけでなく、super.onResume()も呼び出します。これにより、RequestContextに対して、AuthorizeManager.authorize呼び出しからのコールバックの準備ができた場合にアプリが再開されると、AuthorizeListenerを呼び出すよう通知されます。mRequestContext.onResume();}AuthorizeManager.authorizeを呼び出します。AmazonボタンのonClickハンドラーで、authorizeを呼び出し、ユーザーにログインしてアプリケーションを認可するよう求めます。このメソッドは、以下のいずれかの方法でユーザーを認可します。システムブラウザに切り替え、ユーザーにサインインしてリクエストされた情報を承諾するよう求める。セキュアなコンテキストでのウェブ表示に切り替え、ユーザーにサインインしてリクエストされた情報を承諾するよう求める。2つ目に記述されているセキュアなコンテキストは、現在、Android端末上のAmazonショッピングアプリとして利用できます。TV端末など)は、端末上にAmazonショッピングアプリがなくても、常にこのオプションを使用します。このため、ユーザーがすでにAmazonショッピングアプリにサインインしていれば、シングルサインオン(SSO)機能により、このAPIはサインインページをスキップします。アプリケーションが認可されると、スコープと呼ばれる1つ以上のデータセットに対して認可されます。1つ目のパラメーターは、LWAからリクエストしているユーザーデータの範囲となるスコープの配列です。アプリに最初にログインすると、ユーザーに対してリクエストしているデータのリストが提示され、承認を求められます。AVSで使用するLWAでは、現在alexa:allスコープがサポートされています。認可の呼び出しは非同期で行われ、呼び出しの結果を使用してAuthorizeListenerImplインスタンスが呼び出されます。});}TokenListenerを作成します。AuthError>インターフェースを実装します。リスナーがgetToken呼び出しの結果を処理します。リスナーには、onSuccessとonErrorの2つのメソッドが含まれます(getTokenをキャンセルできないため、onCancelはサポートされません)。トークンデータとAuthorizeResultオブジェクトを受信します。onErrorは、エラー情報とAuthErrorオブジェクトを受信します。}}AuthorizeListenerのonSuccessを実装します。onSuccessで、AmazonAuthorizationManager.getTokenを呼び出してアクセストークンを取り出します。getTokenは、authorize同様、非同期のlistenerインターフェースを使用します。AuthError>であり、AuthorizationListenerではありません。TokenListener());}TokenListenerのonSuccessを実装します。以下の2つのタスクがあります。バンドルからアクセストークンを取り出す。UIをログイン状態(ユーザーがログインしていることを示し、ログアウトする手段を提供する)に設定する。authorizeResult.getAccessToken();}アクティビティのonStartメソッドで、getTokenを呼び出し、アプリケーションがまだ認可されているかを確認します。未加工のアクセストークンを取り出します。このアクセストークンは、AVSへのリクエストを行う際に使用できます。authorizeの呼び出しでリクエストしたのと同じスコープが必要です。TokenListener());}これで、AVSへのリクエスト時に使用できるアクセストークンが取得できました。iOSアプリでLWAを使用するには、下の指示に従います。Amazon開発者ポータルでモバイルアプリを登録し、アプリのAPIキーを生成します。アカウントを作成してアプリを登録する方法については、「AVSスタートガイド」を参照してください。Amazonに移動し、ステップ1、4、および5を実行します。次に、以下のステップを実行して、AVSで使用するLWAアクセストークンを取得します。LWAをiOSプロジェクトに追加します。Amazonライブラリをインストールするを参照してください。APIをソースファイルにインポートします。APIをインポートするには、以下の#import文をソースファイルに追加します。<LoginWithAmazon/LoginWithAmazon.h>onLoginButtonClickedでauthorize:withHandler:を呼び出します。Amazonボタンにリンクする必要があります。このメソッド内で、authorize:withHandler:を呼び出し、ユーザーにログインしてアプリケーションを認可するプロンプトを提示します。このメソッドを使うと、ユーザーは、以下のいずれかの方法でサインインし、リクエストされた情報を承諾することができます。8以下)1つ目に記述されているセキュアなコンテキストは、端末にAmazonショッピングアプリがインストールされているときに利用できます。ユーザーがすでにAmazonショッピングアプリにサインインしていれば、シングルサインオン(SSO)機能により、このAPIはサインインページをスキップします。authorize:withHandler:への最初のパラメーターは、アプリケーションがどのスコープの認可をリクエストしているかを示すAMZNAuthorizeRequestオブジェクトです。Amazonからリクエストしているユーザーデータの範囲です。アプリに最初にログインすると、ユーザーに対してリクエストしているデータのリストが提示され、承認を求められます。authorize:withHandler:への2つ目のパラメーターは、AMZNAuthorizationRequestHandlerです。これについては、次のステップで説明します。AMZNAuthorizationRequestHandlerブロックオブジェクトを作成します。authorize:withHandler:呼び出しの結果を処理します。objective-cブロックの詳細については、developer.apple.comでブロックの使用を参照してください。AMZNAuthorizationRequestHandlerの最初のパラメーターはAMZNAuthorizeResultオブジェクトです。ユーザーが正常に認可されたら、AMZNAuthorizeResultには、ユーザーのプロファイルデータにアクセスするために使用できるアクセストークンと、ユーザーのプロファイルデータを含むAMZNUserオブジェクトが含まれます。AMZNAuthorizationRequestHandlerの2つ目のパラメーターは、userDidCancelと呼ばれるブール値です。このパラメーターには、ユーザーが以下を実行した場合にtrueがセットされます。9以上)Amazonショッピングアプリ内でウェブ表示を閉じた場合ログインをキャンセルし、認可を拒否した場合AMZNAuthorizationRequestHandlerの3つ目のパラメーターは、SDKまたは認可サーバーが原因でログインと認可が失敗した場合のエラーの詳細を含むNSErrorオブジェクトです。}];}起動時にユーザーのログイン状態を確認します。ユーザーがアプリにログインし、アプリを終了して、後でアプリを再起動した場合、アプリはまだデータの取得を認可されています。ユーザーは自動的にはログアウトされません。起動時に、アプリがまだ認可されている場合は、ユーザーにログイン状態であることを示すことができます。このセクションでは、authorize:withHandler:を使用してアプリがまだ認可されているかどうかを確認する方法を説明します。AMZNAuthorizeRequestオブジェクトを作成し、アプリケーションで認可をリクエストしているユーザーデータを示すスコープを指定します。詳細については、ステップ3を参照してください。AMZNAuthorizeRequest.interactiveStrategyをAMZNInteractiveStrategyNeverに設定します。ユーザーにログインを求める戦略を複数サポートします。SDKは、ローカルに保存された以前のauthorize:withHandler:応答からの認可グラントを探します。利用可能で、有効かつ必要なスコープをすべて含むものが見つかったら、SDKはAMZNAuthorizationRequestHandlerを介して正常応答を返し、ユーザーにログインを求めません。それ以外の場合、ユーザーにログインを求めます。SDKは、アプリの使用が以前に認可されていたかどうかに関係なく、常にユーザーにログインを求めます。ログインプロンプトを提示したら、SDKはローカルのキャッシュ内にあるアプリの認可グラントをすべて削除します。SDKは、ローカルに保存された以前のauthorize:withHandler応答からの認可グラントを探します。利用可能で、有効かつ必要なスコープをすべて含むものが見つかったら、SDKは、アクセストークンとユーザープロファイルデータを含むAMZNAuthorizeResultオブジェクトを返します。それ以外の場合、AMZNAuthorizationRequestHandlerを介してNSErrorオブジェクトを返します。}}];UIApplicationDelegateプロトコルを処理するプロジェクト内のクラスに、application:openURL:sourceApplication:annotation:を実装します。デフォルトでは、プロジェクト内のAppDelegateクラスです。アプリがAmazonログインページを提示し、ユーザーがログインを完了したら、あらかじめ登録したURLスキームを使用してアプリにリダイレクトされます。リダイレクトは、application:openURL:sourceApplication:annotation:application:openURL:sourceApplication:annotation:に渡され、URLが正常に処理された場合はYESを返します。handleOpenURL:sourceApplication:は、LWAのリダイレクトURLを処理するSDKライブラリの関数です。handleOpenURL:sourceApplication:がYESを返した場合、URLが処理されたことを示します。YES;}これで、AVSへのリクエスト時に使用できるアクセストークンが取得できました。