JavaScript用のLogin with Amazon SDKリファレンスガイド


JavaScript用のLogin with Amazon SDKリファレンスガイド

これは、JavaScript用のLogin with Amazon SDKのリファレンスです。このドキュメントには、JavaScript用のLogin with Amazon SDKに関するリファレンスとSDKの読み込み方法に関する情報が記載されています。Login with Amazonは、AmazonユーザーがAmazon認証情報を使用してウェブやモバイルアプリにログインできるウェブサービスです。ユーザーがログインすると、そのユーザーのAmazonプロファイル情報の一部にアプリがアクセスできるようになります。

amazon.Loginのメソッド

login.jsの関数はすべてamazon.Login名前空間内にあります。これらの関数によって、クライアントアプリの特定、アクセストークンのリクエスト、アクセストークンとユーザープロファイル情報の交換を実行できます。

authorize

AuthorizeRequest authorize(options, next);

optionsに応じて認可をリクエストし、その後リダイレクトするかnextを呼び出します。設定されているoptionsの内容によって、ユーザーがログインするためのポップアップウィンドウが開くか、ウィンドウがログインページにリダイレクトされます。authorizeの前に、setClientIdを呼び出す前に呼び出す必要があります。retrieveProfileの前に、authorizeを呼び出す必要があります。

このメソッドはAuthorizeRequestオブジェクトを返します。そのオブジェクトでonCompleteを呼び出して、コールバック関数またはリダイレクトURIを登録します。これはnextパラメーターに似ています。リクエストが完了すると、レスポンスの詳細を記述したプロパティ(アクセストークンや認可コードなど)がオブジェクトに格納されます。

パラメーター

  • options - 必須 -(Object)。
    optionsには、次のプロパティを使用できます。
    • interactive -(String)ユーザーにログイン画面を表示するタイミングを指定します。autoの場合は、キャッシュされたトークンの使用を試みます。キャッシュされたトークンが使用できない、または存在しない場合、ユーザーにログイン画面が表示されます。alwaysの場合は、キャッシュされたトークンを使用せずに常にログイン画面を表示します。neverの場合は、キャッシュされたトークンを使用します。そのトークンが機能しない場合、authorizeはinvalid_grantを返します。デフォルトはautoです。
    • popup -(Boolean)trueは、ログイン用のポップアップウィンドウを表示します。falseの場合は、現在のブラウザウィンドウを認可ダイアログにリダイレクトします。デフォルトはtrueです。falseの場合、nextパラメーターをリダイレクトURLにする必要があります。ポップアップウィンドウは、ネイティブのiOSアプリではサポートされていません。
    • response_type -(String)リクエストされたグラントの種類。インプリシットグラントをリクエストするためのtoken、または認可コードグラントをリクエストするためのcodeを指定します。デフォルトはtokenです。
    • scope - 必須 -(StringまたはArray[String])リクエストされたアクセススコープprofileprofile:user_idpostal_code、またはその組み合わせになります。
    • state -(String)状態パラメーター。このリクエストからレスポンスまでの状態を維持するためにクライアントが使用する不透明型の値。Login with Amazon認可サービスがユーザーをクライアントに戻すときに、この値をパラメーターに含めます。また、クロスサイトリクエストフォージェリを防ぐためにも使用されます。詳細については、クロスサイトリクエストフォージェリを参照してください。
  • nextFunctionまたはString)ブラウザレスポンスをリダイレクトするためのURI、または認可レスポンスを引数として呼び出すJavaScript関数。

nextパラメーターについて

nextがURIの場合、ユーザーがログインすると現在のウィンドウがURIにリダイレクトされ、認可レスポンスがクエリ文字列に追加されます。URIはHTTPSプロトコルで指定され、リダイレクト前のウィンドウと同じドメインに属している必要があります。

options = { scope: 'profile' };
amazon.Login.authorize(options, 'https://example.org/redirect_here')
// 成功した場合、現在のウィンドウが以下にリダイレクトされます:
// https://example.org/redirect_here?access_token=XYZ&token_type=bearer&…

// 失敗した場合、現在のウィンドウが以下にリダイレクトされます:
// https://example.org/redirect_here?error=access_denied&…

nextがコールバック関数の場合は、認可レスポンスのフィールドを含んだレスポンスオブジェクトを引数として呼び出されます。

options = { scope: 'profile' };
amazon.Login.authorize(options, function(response) {
  if ( response.error ) {
      alert('oauthエラー' + response.error);
     return;
  }
alert('成功:' + response.access_token);
});

レスポンスのキャッシング

authorizeが有効なアクセストークンのレスポンスを受け取ると、トークンと関連するメタデータは、再利用できるように自動的にキャッシュされます。このキャッシュは、ページの再読み込み後も、異なるブラウザセッション間でも保持されます。後続のauthorizeの呼び出しを、キャッシュされたトークンレスポンスで実行できる場合、SDKは新しい認可をリクエストするのではなく、そのトークンを再利用します。options.interactiveを使用して、この動作をオーバーライドします。

インタラクティブモード

options.interactive設定により、インタラクティブモードを以下の3つの中から選択できます。

  • auto: キャッシュされたトークンを使用してユーザーの認可を試みます。それに失敗した場合、新しい認可を開始し、必要に応じてログイン画面と同意画面を表示します。
  • always: キャッシュされたトークンはすべて無視して新しい認可を開始し、ログイン画面を表示します。
  • never: キャッシュされたトークンを使用してユーザーの認可を試みます。それに失敗した場合は、invalid_grantエラーを返します。

戻り値

AuthorizeRequestオブジェクト。AuthorizeRequestによって、呼び出し側は、ログインリクエストが完了したときに使用するコールバック関数やリダイレクトURLを登録できます。また、リクエストの現在のステータスを取得することもできます。リクエストが完了すると、認可リクエストのタイプに応じてAuthorizeRequestに新しいプロパティが追加されます。リクエストに失敗した場合は、エラーのプロパティがオブジェクトに追加されます。

getClientID

getClientId();

認可をリクエストするときに使用されるクライアント識別子を取得します。この関数の前にsetClientIdを呼び出す必要があります。

パラメーター

なし。

戻り値

clientId -(String)アプリに割り当てられるクライアントID。最大サイズは100バイトです。

関連項目

logout

logout();

authorizeを呼び出した後に現在のユーザーをログアウトします。

パラメーター

なし。

戻り値

なし。

例:

<script type="text/javascript">
  document.getElementById('logout').onclick = function() {
     amazon.Login.logout();
  };
</script>

関連項目

retrieveProfile

retrieveProfile(accessToken, callback);

ユーザープロファイルを取得してコールバック関数に渡します。authorizeによって提供されるアクセストークンを使用します。

パラメーター

  • accessToken - 省略可能 -(String)アクセストークン。このパラメーターが省略されると、retrieveProfileauthorizeを呼び出し、profileスコープをリクエストします。

コールバック(callback)

function(response);

プロファイルデータまたはエラー文字列を引数として呼び出されます。

コールバックパラメーター

  • response -(Object)
    • success -(Boolean)trueはリクエストが成功した場合です。成功しなかった場合はfalseになります。
    • error -(String)リクエストに失敗した場合に返され、エラーメッセージが含まれます。
    • profile -(Object)リクエストに成功した場合に返され、プロファイル情報が含まれます。
      • CustomerId -(String)この呼び出しでログインしたユーザーを一意に特定する識別子。profileスコープまたはprofile:user_idスコープがリクエストされて許可された場合にのみ表示されます。
      • Name -(String)ユーザーの名前。profileスコープがリクエストされて許可された場合にのみ表示されます。
      • PostalCode -(String)ユーザーの主な住所の郵便番号。postal_codeスコープがリクエストされて許可された場合にのみ表示されます。
      • PrimaryEmail -(String)ユーザーの主なEメールアドレス。profileスコープがリクエストされて許可された場合にのみ表示されます。
amazon.Login.authorize({ scope: 'postal_code profile' }, function () {
    amazon.Login.retrieveProfile(function (response) {
        // プロファイル情報を表示します。
    });
});

例1:

<script type="text/javascript">
document.getElementById('LoginWithAmazon').onclick = function() {
 setTimeout(window.doLogin, 1);
 return false;
};
window.doLogin = function() {
  options = {};
  options.scope = 'profile';
  amazon.Login.authorize(options, function(response) {
     if ( response.error ) {
       alert('oauthエラー' + response.error);
       return;
     }
     amazon.Login.retrieveProfile(response.access_token, function(response) {
         alert('こんにちは。' + response.profile.Name);
         alert('あなたのEメールアドレス:' + response.profile.PrimaryEmail);
         alert('あなたの一意のID:' + response.profile.CustomerId);
         if (window.console && window.console.log)
         window.console.log(response);
     });
 });
};
</script>

例2:

var access_token = 'Atza|EKdsnskdna…'; // 認可レスポンスから取得

amazon.Login.retrieveProfile(access_token, function(response) {
  if ( response.success ) {
     alert('こんにちは。' + response.profile.Name);
     alert('あなたのEメールアドレス:' + response.profile.PrimaryEmail);
     alert('あなたの一意のID:' + response.profile.CustomerId);
  }
  else {
     alert(' エラーが発生しました:' + response.error);
  }
});

関連項目

setClientId

setClientId(clientId);

認可をリクエストするときに使用されるクライアント識別子を設定します。authorizeの前に、この関数を呼び出す必要があります。

パラメーター

  • clientId - 必須 -(String)。アプリに割り当てられるクライアントID。

戻り値

なし。

例:

window.onAmazonLoginReady = function() {
  amazon.Login.setClientId('YOUR-CLIENT-ID');
};

setSandboxMode

setSandboxMode(sandboxMode);

Login with AmazonがリクエストにAmazon Payサンドボックスを使用するかどうかを判断します。Amazon Payサンドボックスを使用するには、authorizeを呼び出す前にsetSandboxMode(true)を呼び出します。

パラメーター

  • sandboxMode - 必須 -(boolean)。Amazon Payサンドボックスを使用してリクエストを処理する場合はtrue、使用しない場合はfalseになります。

戻り値

なし。

関連項目

setSiteDomain

setSiteDomain(siteDomain);

Cookieを保存するために使用するドメインを設定します。ドメインは現在のページのオリジンと一致している必要があります。デフォルトは現在のページのフルドメインになります。たとえば、JavaScript用のLogin with Amazon SDKを使用してsite1.example.comsite2.example.comという2つのページを用意している場合、各サイトのヘッダーでサイトドメインをexample.comに設定します。これにより、どちらのサイトのCookieでも、キャッシュされている同じトークンにアクセスできるようになります。

パラメーター

  • siteDomain - 必須 -(String)。Login with AmazonのCookieを保存するためのサイト。現在のページのオリジンを共有する必要があります。

戻り値

なし。

関連項目

setUseCookie

setUseCookie(useCookie);

amazon_Login_accessTokenCookieに書き込まれたアクセストークンをLogin with Amazonが使用するかどうかを指定します。この値を使用して、ほかのページとアクセストークンを共有できます。アクセストークンは特定のアカウントを対象に生成されるため、登録されたそのアカウントにのみ使用できます。

trueの場合、JavaScript用のLogin with Amazon SDKはこのCookieにキャッシュされているトークンを確認し、新たに付与されたトークンをそのCookieに保存します。

パラメーター

  • useCookie - 必須 -(boolean)。trueの場合は、authorizeから返されるアクセストークンをCookieに保存します。それ以外の場合は、falseになります。

戻り値

なし。

関連項目

amazon.Loginのクラス

AuthorizeRequest

AuthorizeRequestクラスは、authorize呼び出しのレスポンスに使用されます。AuthorizeRequestMによって、呼び出し側は、ログインリクエストが完了したときに使用するコールバック関数やリダイレクトURLを登録できます。また、リクエストの現在のステータスを取得することもできます。リクエストが完了すると、認可リクエストのタイプに応じてAuthorizeRequestが新しいプロパティを追加します。リクエストが失敗した場合は、エラーのプロパティが失敗の情報を返します。

次の表に、各レスポンスタイプで追加されるプロパティを示します。

レスポンスタイプ プロパティ
認可レスポンス  codestate
アクセストークンレスポンス access_tokentoken_typeexpires_inscope
エラーレスポンス errorerror_descriptionerror_uri

onComplete

onComplete(next);

コールバック関数を登録するか、認可リクエストが完了したときに呼び出すリダイレクトURIを設定します。リクエストの完了後にこの関数を呼び出すと、関数またはリダイレクトが直ちに実行されます。コールバック関数が使用される場合、AuthorizeRequestが最初のパラメーターになります。リダイレクトURIが使用される場合、クエリ文字列にOAuth 2レスポンスパラメーターが含まれた状態で、ブラウザはそのURIにリダイレクトされます。

複数のリダイレクトURLが設定されている場合、AuthorizeRequestは最新のURLを適用します。

パラメーター

  • next -(FunctionまたはString)ブラウザレスポンスをリダイレクトするためのURI、または認可レスポンスを引数として呼び出すJavaScript関数。

access_token

access_token -(String)認可サーバーによって発行されるアクセストークン。

code

code -(String)アクセストークンと交換できる認可コード。

error

error -(String)認可に失敗した理由を示す短いエラーコード。次のいずれかになります。

エラー 説明
access_denied ユーザーまたは認可サーバーがリクエストを拒否しました。
invalid_grant キャッシュされているトークンを使用できないため、認可サーバーがリクエストを拒否しました。
invalid_request リクエストに必須パラメーターがない、値が無効、または形式に誤りがあります。
invalid_scope リクエストされたスコープのうち少なくとも1つが無効です。
server_error 認可サーバーで想定外のエラーが発生しました。これは、HTTPステータスコード500に似ています。
temporarily_unavailable 現在、一時的な問題により認可サーバーを利用できません。これは、HTTPステータスコード503に似ています。
unauthorized_client クライアントにはこのリクエストを実行する権限がありません。

error_description

error_description -(String)エラーを人が読み取れる形式で説明したもの。

error_uri

error_uri -(String)エラーに関する詳細が記載されたウェブページのURI。

expires_in

expires_in -(Number)アクセストークンの有効期限が切れるまでの秒数。

scope

scope -(String)アクセストークンに対して認可サーバーが付与するスコープ。profileprofile:user_idpostal_code、またはその組み合わせになります。

state

state -(String)optionsオブジェクトを使用してauthorizeに渡されるstate値。

status

status -(String)リクエストの現在のステータス。queuedin progresscompleteのいずれかになります。

token_type

token_type -(String)発行されたトークンの種類。bearerである必要があります。