getUserDataの変更の実装
Get Access Token API
Appstore IAPには、アクセストークンを取得するためのGet Access Token REST APIが用意されています。このセクションでは、リクエスト、レスポンス、エラーについて説明します。アクセストークンリクエスト
requestUserProfileAccess()のレスポンスと有効な認可コードを受け取ったアプリは、そのコードを使用してアクセストークンを取得できます。アクセストークンがあれば、クライアントはユーザープロフィールを読み取ることができます。
Get Access Token APIは、次の例に示すように、GETリクエストではなくPOSTリクエストを使用する必要があります。
| リクエストパラメーター | 説明 |
|---|---|
grant_type | 必須。リクエストされたアクセスグラントのタイプ。authorization_codeを指定する必要があります。 |
code | 必須。requestUserProfileAccess()メソッドから返された認可コード。 |
client_id | 必須。クライアント識別子。 |
client_secret | 必須。登録時にクライアントに割り当てられたシークレット値。クライアントシークレットはウェブページに確実に保存できないため、ブラウザベースのアプリではクライアントシークレットを使用しないでください。 |
アクセストークンレスポンス
ユーザーデータにアクセスするには、Appstore IAPのGet User Profile APIにアクセストークンを提供する必要があります。アクセストークンは350文字以上の英数字のコードで、最大サイズは2,048バイトです。アクセストークンはAtza|という文字列で始まります。
レスポンスパラメーターは、application/jsonメディアタイプを使用してエンコードされます。詳細については、RFC4627(英語のみ)を参照してください。以下は、アクセストークンリクエストからのレスポンスの例です。
| レスポンスパラメーター | 説明 |
|---|---|
access_token | ユーザーアカウントのアクセストークン。最大サイズは2,048バイトです。 |
token_type | 返されたトークンのタイプ。値はbearerです。 |
expires_in | アクセストークンが無効になるまでの秒数。 |
refresh_token | 新しいアクセストークンのリクエストに使用できるリフレッシュトークン。最大サイズは2,048バイトです。 |
アクセストークンエラー
エラーによっては、認可サービスがHTTP 401 (Unauthorized)のステータスコードを返す場合があります。これには、クライアントが認可ヘッダーでclient_idとclient_secretの値を渡したものの、クライアントが認証されなかった場合などが該当します。
次の表では、失敗したレスポンスのエラーパラメーターについて説明します。
| エラーパラメーター | 説明 |
|---|---|
error | エラーコード値を表すASCIIエラーコード。 |
error_description | クライアント開発者が判読できる形でエラーに関する情報を記載したASCII文字列。 |
request_id | アクセストークンリクエストに関連付けられたID。 |
errorの値として次のエラーコードが返される可能性があります。
| エラーコード | 説明 |
|---|---|
invalid_request | リクエストに必須パラメーターがない、値が無効、または形式に誤りがあります。 |
invalid_client | クライアントの認証に失敗しました。これは、認可サービスがHTTP 401 (Unauthorized)ステータスコードを返さない場合に使用されます。 |
invalid_grant | 認可コードが無効、期限切れ、取り消し済みであるか、または別のclient_idに対して発行されています。 |
unauthorized_client | 認可コードを使用する権限がクライアントにありません。原因として、code_verifierが無効である可能性があります。 |
unsupported_grant_type | クライアントが指定したtoken_typeに誤りがあります。 |
ServerError | サーバーでランタイムエラーが発生しました。 |
Get User Profile API
Appstore IAPには、ユーザープロフィールデータを取得するためのGet User Profile REST APIが用意されています。このセクションでは、リクエスト、レスポンス、エラーについて説明します。ユーザープロフィールのリクエスト
承認されたユーザープロフィールデータにアクセスするには、Get User Profile APIを使用してアクセストークンをAmazonアプリストアに送信します。Get User Profile APIは、HTTPS GETリクエストで、Get Access Token APIから受け取ったアクセストークンを唯一のパラメーターとして使用します。 次の例は、ユーザープロフィールデータを取得するGETリクエストを示しています。| リクエストパラメーター | 説明 |
|---|---|
access_token | 必須。Get Access Token APIから受け取ったアクセストークン。 |
ユーザープロフィールのレスポンス
アクセストークンが有効な場合は、次の例のように、HTTPレスポンスとしてユーザーのプロフィールデータがJSONで返されます。| HTTPステータスコード | ステータスメッセージ | 説明 |
|---|---|---|
| 200 | Success | リクエストは成功しました。 |
| 400 | invalid_request | リクエストに必須パラメーターが含まれていないか、形式に誤りがあります。 |
| 400 | invalid_token | 提供されたアクセストークンは、期限切れ、取り消し済み、誤った形式であるか、その他の理由により無効です。 |
| 401 | insufficient_scope | 提供されたアクセストークンには必要なスコープへのアクセス権がありません。 |
| 500 | ServerError | サーバーでランタイムエラーが発生しました。 |
アカウント設定に関するベストプラクティス
ユーザーのアカウントを設定するときは、以下のベストプラクティスに従ってください。-
useIapUserData()フックのgetUserData()レスポンスに含まれるUserProfileAccessConsentStatusの値がCONSENTEDの場合は、次の操作を行います。- Appstore IAPのGet User Profile APIからユーザー情報を取得します。この情報を使用して、一時パスワードでログインアカウントを作成します。パスワードのリセットや追加情報をユーザーに要求することなく、ユーザーをアプリにサインインさせます。
- 後で、パスワードをリセットするようにEメールでユーザーに通知します。
-
UserProfileAccessConsentStatusがUNAVAILABLEの場合は、アプリのデフォルトの登録エクスペリエンスをユーザーに表示します。

