ワンクリックアカウント情報共有の統合
ワンクリックアカウント情報共有の設定は、クイック定期購入フローにおける重要なステップです。ワンクリックアカウント情報共有では、ユーザーが最小限の労力でAmazonアカウントの情報をアプリと共有でき、手動でアカウントの詳細を入力する必要がありません。この機能により、ユーザーの登録エクスペリエンスが向上します。アプリでワンクリックアカウント情報共有機能を設定するには、以下のガイドを使用してください。
getUserDataの変更の実装
ユーザーがAmazonアカウントの詳細情報の共有に同意したかどうかを判断するには、アプリのメイン画面コンポーネンで、UserDataRequestオブジェクトのfetchUserProfileAccessConsentStatusフラグをtrueに設定してuseIapUserDataフックを呼び出します。
次の例は、ユーザーが詳細情報を提供することに同意した場合に、UserDataRequestオブジェクトを作成し、useIapUserDataフックを使用してそれを呼び出す方法を示しています。
// getUserDataを呼び出します。
const { iapUserDataLoading, iapUserDataError, iapUserData } = useIapUserData({fetchUserProfileAccessConsentStatus: true});
// ...
// Userdataが読み込まれたら、ハンドラーを呼び出します。
if (!iapUserDataLoading && !iapUserDataError) {
this.handleUserDataResponse(iapUserData);
}
// getUserDataのレスポンスを処理します。
public static handleUserDataResponse = (response: UserDataResponse): UserData => {
const responseCode = response.responseCode;
switch (responseCode) {
case UserDataResponseCode.SUCCESSFUL:
Logger.debug(`GetUserDataStatus: SUCCESSFUL`);
Logger.debug(
`GetUserDataResponse: UserId (${response.userData.userId}), Marketplace (${response.userData.marketplace}), ConsentStatus (${response.userData.userProfileAccessConsentStatus})`
);
break;
case UserDataResponseCode.FAILED:
case UserDataResponseCode.NOT_SUPPORTED:
// 失敗時の処理を適切に行います。
break;
}
return response.userData; // FAILEDとNOT_SUPPORTEDの場合はnullを返します。
};
ユーザーが同意した場合、UserDataオブジェクトのuserProfileAccessConsentStatusのステータスはCONSENTEDになります。ユーザーが同意していない場合、または同意トークンの有効期限が切れている場合、userProfileAccessConsentStatusのステータスはUNAVAILABLEになります。
次のコードは、UserDataResponseオブジェクトから受け取った同意データを処理する方法を示しています。
// getUserDataのレスポンスを処理します。
public static handleUserDataResponse = (response: UserDataResponse): UserData => {
const responseCode = response.responseCode;
switch (responseCode) {
case UserDataResponseCode.SUCCESSFUL:
Logger.debug(`GetUserDataStatus: SUCCESSFUL`);
Logger.debug(
`GetUserDataResponse: UserId (${response.userData.userId}), Marketplace (${response.userData.marketplace}, ConsentStatus (${response.userData.userProfileAccessConsentStatus}))`
);
if (UserProfileAccessConsentStatus.CONSENTED === response.userData.userProfileAccessConsentStatus) {
PurchasingService.requestUserProfileAccess()
.then((res) => {
this.handlerUserProfileAccessResponse(res);
});
}
break;
case UserDataResponseCode.FAILED:
case UserDataResponseCode.NOT_SUPPORTED:
// 失敗時の処理を適切に行います。
break;
}
return response.userData; // FAILEDとNOT_SUPPORTEDの場合はnullを返します。
};
public static handlerUserProfileAccessResponse = (response: UserProfileAccessResponse): void => {
// ここでuserProfileAccessAuthCodeを使用してサーバーを更新し、
// RVSを呼び出してアクセストークンとユーザープロフィールを取得する必要があります。
}
ユーザーが同意した場合は、requestUserProfileAccess()メソッドを呼び出した後、そのメソッドのレスポンスでサーバーを更新する必要があります。次に、Appstore IAP REST APIを呼び出して、アクセストークンとユーザープロフィールを取得します。共有されたユーザー情報を使用して、バックエンドシステムにアカウントを作成します。
任意 - ユーザーが同意しない場合は、独自のサインイン画面を表示します。これにより、ユーザーはキーボードで認証情報を入力してアプリにサインインできます。
Get Access Token API
Appstore IAPには、アクセストークンを取得するためのGet Access Token REST APIが用意されています。このセクションでは、リクエスト、レスポンス、エラーについて説明します。
アクセストークンリクエスト
requestUserProfileAccess()のレスポンスと有効な認可コードを受け取ったアプリは、そのコードを使用してアクセストークンを取得できます。アクセストークンがあれば、クライアントはユーザープロフィールを読み取ることができます。
Get Access Token APIは、次の例に示すように、GETリクエストではなくPOSTリクエストを使用する必要があります。
POST https://appstore-sdk.amazon.com/version/1.0/auth/o2/token?
grant_type=authorization_code
&code=SplxlOBezQQYbYS6WxSbIA
&client_id=foodev
&client_secret=foosecret
次の表では、アクセストークンリクエストのパラメーターについて説明します。
アクセストークンレスポンス
ユーザーデータにアクセスするには、Appstore IAPのGet User Profile APIにアクセストークンを提供する必要があります。アクセストークンは350文字以上の英数字のコードで、最大サイズは2,048バイトです。アクセストークンはAtza|という文字列で始まります。
レスポンスパラメーターは、application/jsonメディアタイプを使用してエンコードされます。詳細については、RFC4627(英語のみ)を参照してください。以下は、アクセストークンリクエストからのレスポンスの例です。
{
"access_token":"Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR...",
"token_type":"bearer",
"expires_in":3600,
"refresh_token":"Atzr|IQEBLzAtAhRPpMJxdwVz2Nn6f2y-tpJX2DeX..."
}
次の表では、アクセストークンレスポンスのパラメーターについて説明します。
アクセストークンはBearerトークンであり、別のクライアントでも使用できます。詳細については、The OAuth 2.0 Authorization Framework: Bearer Token Usage(英語のみ)を参照してください。
アクセストークンエラー
エラーによっては、認可サービスがHTTP 401 (Unauthorized)のステータスコードを返す場合があります。これには、クライアントが認可ヘッダーでclient_idとclient_secretの値を渡したものの、クライアントが認証されなかった場合などが該当します。
次の表では、失敗したレスポンスのエラーパラメーターについて説明します。
| エラーパラメーター | 説明 |
|---|---|
error |
エラーコード値を表すASCIIエラーコード。 |
error_description |
クライアント開発者が判読できる形でエラーに関する情報を記載したASCII文字列。 |
request_id |
アクセストークンリクエストに関連付けられたID。 |
errorの値として次のエラーコードが返される可能性があります。
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リクエストを示しています。
GET https://appstore-sdk.amazon.com/version/1.0/user/profile?
access_token=Atza|IQEBLjAsAhRmHjNgHpi0U-Dme37rR6CuUpSR...
| リクエストパラメーター | 説明 |
|---|---|
access_token |
必須。Get Access Token APIから受け取ったアクセストークン。 |
ユーザープロフィールのレスポンス
アクセストークンが有効な場合は、次の例のように、HTTPレスポンスとしてユーザーのプロフィールデータがJSONで返されます。
{
"user_id": "amznl.account.K2LI23KL2LK2",
"email":"mhashimoto-04@plaxo.com",
"name" :"Mork Hashimoto",
"postal_code": "98052"
}
プロフィールリクエストを処理できない場合は、HTTPエラーが返されます。このとき、次の例のように、詳細情報を含むJSONペイロードが返されることがあります。
{
"error": "コンピューターで解読できるエラーコード",
"error_description": "human-readable error description",
"request_id": "bef0c2f8-e292-4l96-8c95-8833fbd559df"
}
次の表に、ユーザープロフィールリクエストが失敗した場合に返される可能性のあるエラーコードを示します。
アカウント設定に関するベストプラクティス
ユーザーのアカウントを設定するときは、以下のベストプラクティスに従ってください。
useIapUserData()フックのgetUserData()レスポンスに含まれるUserProfileAccessConsentStatusの値がCONSENTEDの場合は、次の操作を行います。- Appstore IAPのGet User Profile APIからユーザー情報を取得します。この情報を使用して、一時パスワードでログインアカウントを作成します。パスワードのリセットや追加情報をユーザーに要求することなく、ユーザーをアプリにサインインさせます。
- 後で、パスワードをリセットするようにEメールでユーザーに通知します。
UserProfileAccessConsentStatusがUNAVAILABLEの場合は、アプリのデフォルトの登録エクスペリエンスをユーザーに表示します。
関連トピック
Last updated: 2025年9月30日

