Merchant API を使用するには、デベロッパー登録を通じて Google Cloud プロジェクトをプライマリ Merchant Center アカウントにリンクする必要があります。統合のライフサイクル全体を通して、Merchant Center アカウントに関連付けられた Google Cloud プロジェクト ID の変更、環境全体での複数のプロジェクトの管理、Content API for Shopping からの移行時のプロジェクトの移行が必要になる場合があります。
このガイドでは、以下の方法を説明します。
- ダウンタイムなしで、既存の Merchant API 統合の Google Cloud プロジェクト ID を変更またはローテーションする。
- 1 つの Merchant Center アカウントから Google Cloud プロジェクトの登録を解除し、別の Merchant Center アカウントに登録する。
- Content API for Shopping から Merchant API に移行する場合は、適切な Google Cloud プロジェクト移行戦略を選択して実行する。
前提条件
Google Cloud プロジェクトを管理または移行する前に、デベロッパー登録の前提条件を満たしていることを確認してください。詳しくは、 デベロッパーとして登録する ガイドの 前提条件 をご覧ください。
主なルールと制限事項
Google Cloud プロジェクトの変更を計画する際は、次のルールに注意してください。
- プロジェクトの 1 対多の登録: 1 つのプライマリ Merchant Center アカウントに、複数の Google Cloud プロジェクトを同時に登録できます。ただし、各 Google Cloud プロジェクトは、任意の時点で 1 つのプライマリ Merchant Center アカウントにのみ登録できます。別の Merchant Center アカウントにすでにリンクされているプロジェクトを登録しようとすると、理由
DUPLICATE_PROJECT_REGISTRATIONでALREADY_EXISTS(409 Conflict)エラーが返されます。 - プロジェクトの所有者のプライバシー: セキュリティとプライバシー保護の観点から、Google Shopping と Merchant API のサポートでは、Google Cloud プロジェクトの所有者または管理者のメールアドレスを開示できません。プロジェクトにアクセスできなくなった場合は、 Google Cloud サポートにお問い合わせください。
- Content API for Shopping のシャットダウンの延長はプロジェクト固有: Content API for Shopping のアクセス延長の承認を受けた場合、その延長はリクエストで送信された特定の Google Cloud プロジェクト ID にのみ適用されます。延長は新しい Google Cloud プロジェクトに自動的に転送されません。
Merchant API アカウントの Google Cloud プロジェクト ID を変更する
Merchant API をすでに使用していて、組織の再編、認証情報のローテーション ポリシー、古いプロジェクトへの管理アクセス権の喪失などの理由で、統合を新しい Google Cloud プロジェクトに切り替える必要がある場合は、ダウンタイムなしでプロジェクトを移行できます。Merchant Center アカウントは複数の登録済み Google Cloud プロジェクトを同時にサポートしているため、古いプロジェクトを廃止する前に新しいプロジェクトを登録できます。
ステップ 1: 新しい Google Cloud プロジェクトを作成して構成する
- Google Cloud コンソールで新しいプロジェクトを作成します。 詳細な手順については、 Google Cloud プロジェクトを作成するをご覧ください。
- 新しいプロジェクトで Merchant API (
merchantapi.googleapis.com)を有効にします。 Google Cloud プロジェクトを作成するの Merchant API を有効にする をご覧ください。 - 新しい Google Cloud プロジェクトで認証情報(サービス アカウントまたは OAuth 2.0 クライアント ID)を作成します。
- 認証に使用するメールアドレス(新しいサービス アカウントのメールなど)を、プライマリ Merchant Center アカウントの
ADMINロールを持つユーザーとして追加します。
ステップ 2: 新しい Google Cloud プロジェクトを登録する
新しい Google Cloud プロジェクト
の認証情報を使用して認証し、
accounts.developerRegistration.registerGcp
メソッドを呼び出して、新しいプロジェクトをプライマリ Merchant Center アカウントにリンクします。詳細な手順については、
デベロッパーとして登録するの
登録呼び出しを行う
をご覧ください。
ステップ 3: 登録済みの Google Cloud プロジェクトを確認する
既存の Google Cloud プロジェクトと新しい Google Cloud プロジェクトの両方が Merchant Center アカウントに
リンクされていることを確認するには、
accounts.developerRegistration.getDeveloperRegistration
メソッドを呼び出します。
GET https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration
Authorization: Bearer ACCESS_TOKEN
次のように置き換えます。
ACCOUNT_ID: Merchant Center IDACCESS_TOKEN: API 呼び出しを行うための認証トークン
レスポンスは、リンクされているすべての
クラウド プロジェクトの数値 Google Cloud プロジェクト番号を含む
DeveloperRegistration
リソースを、gcpIds フィールドで返します。
{
"name": "accounts/ACCOUNT_ID/developerRegistration",
"gcpIds": [
"123456789012",
"987654321098"
]
}
呼び出し元の
Google Cloud プロジェクトが登録されている Merchant Center アカウントを確認するには、
accounts.developerRegistration.getAccountForGcpRegistration
メソッドを呼び出します。
GET https://merchantapi.googleapis.com/accounts/v1/accounts:getAccountForGcpRegistration
Authorization: Bearer ACCESS_TOKEN
次のように置き換えます。
ACCESS_TOKEN: 確認する Google Cloud プロジェクトの認証情報を使用して生成された認証トークン
ステップ 4: トラフィックを切り替えて、古い Google Cloud プロジェクトの登録を解除する
- 新しい Google Cloud プロジェクトの認証情報を使用するようにアプリケーション構成を更新します。両方のプロジェクトが登録されているため、ワークロードは中断することなく移行されます。
- すべてのトラフィックが新しいプロジェクトを使用するようになったら、古い
プロジェクトのリンクを、古い Google Cloud
プロジェクトの認証情報で認証し、
accounts.developerRegistration.unregisterGcpメソッドを呼び出して削除できます。
POST https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp
Content-Type: application/json
Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN
次のように置き換えます。
ACCOUNT_ID: Merchant Center IDOLD_PROJECT_ACCESS_TOKEN: API 呼び出しを行うための古い Google Cloud プロジェクトの認証トークン
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationName;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceClient;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistrationServiceSettings;
import com.google.shopping.merchant.accounts.v1.UnregisterGcpRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to unregister the GCP project currently used to call the Merchant API
* for a specific account.
*/
public class UnregisterGcpSample {
public static void unregisterGcp(Config config) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
DeveloperRegistrationServiceSettings developerRegistrationServiceSettings =
DeveloperRegistrationServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates DeveloperRegistration name to identify the DeveloperRegistration.
// The name has the format: accounts/{account}/developerRegistration
String name =
DeveloperRegistrationName.newBuilder()
.setAccount(config.getAccountId().toString())
.build()
.toString();
// Calls the API and propagates any network failures/errors.
try (DeveloperRegistrationServiceClient developerRegistrationServiceClient =
DeveloperRegistrationServiceClient.create(developerRegistrationServiceSettings)) {
// Creates a request to unregister the GCP project.
UnregisterGcpRequest request = UnregisterGcpRequest.newBuilder().setName(name).build();
System.out.println("Sending UnregisterGcp request for: " + name);
developerRegistrationServiceClient.unregisterGcp(request);
System.out.println("Unregister GCP successful.");
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
unregisterGcp(config);
}
}
cURL
curl -X POST \
"https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration:unregisterGcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer OLD_PROJECT_ACCESS_TOKEN"
登録済みの Google Cloud プロジェクトを別の Merchant Center アカウントに再割り当てする
Google Cloud プロジェクトは、一度に 1 つのプライマリ Merchant Center アカウントにのみ登録できます。既存のクラウド プロジェクトを 1 つの Merchant Center アカウント(OLD_ACCOUNT_ID)から別の Merchant Center アカウント(NEW_ACCOUNT_ID)に再割り当てするには、次の手順を行います。プロジェクトを登録する Merchant Center アカウントの選択に関するガイドラインについては、重要な考慮事項をご覧ください。
OLD_ACCOUNT_IDにアクセスできる Google Cloud プロジェクトの認証情報を使用して認証し、accounts/OLD_ACCOUNT_ID/developerRegistrationでunregisterGcpを呼び出します。- 認証に使用する ID に
NEW_ACCOUNT_IDのADMINロールが付与されており、NEW_ACCOUNT_IDに確認済みのウェブサイトがあることを確認します。 - 同じ Google Cloud プロジェクトの認証情報を使用して、
accounts/NEW_ACCOUNT_ID/developerRegistrationでregisterGcpを呼び出します。NEW_ACCOUNT_IDにAPI_DEVELOPERロールを持つユーザーがまだいない場合は、有効なユーザー メールアドレスをdeveloperEmailリクエスト フィールドに渡します。.gserviceaccount.comで終わるサービス アカウントのメールアドレスは、developerEmailとして使用できません。
Content API for Shopping から移行する際に Google Cloud プロジェクトを移行する
Content API for Shopping から Merchant API に移行する際に、従来の Google Cloud プロジェクトへのアクセスが制限されることがあります。たとえば、元の API キーが従来の Merchant Center 認証ワークフローを通じて直接構成されている場合や、元のプロジェクト オーナーが組織を離れた場合などです。
既存のプロジェクトを維持するか、古いプロジェクトで Content API for Shopping を維持しながら Merchant API に新しいプロジェクトを使用するかに応じて、次のいずれかのオプションを選択します。
移行プロジェクトの戦略を選択する
| シナリオ | 古いプロジェクトへの管理者権限が必要ですか? | 有効にする API | 新しいプロジェクトで Content API for Shopping の延長が必要ですか? |
|---|---|---|---|
| オプション 1: 既存のプロジェクトを維持する | はい(または Google Cloud サポートを通じて復元) | 既存の プロジェクトで Merchant API を有効にする(Content API for Shopping はすでに有効になっています) | いいえ(古いプロジェクト ID の既存の延長は有効なままです) |
| オプション 2: Content API for Shopping に古いプロジェクトを維持し、Merchant API に新しいプロジェクトを使用する | いいえ | 新しい プロジェクトで Merchant API を有効にする(古い プロジェクトで Content API for Shopping を有効にしたままにする) | いいえ (古いプロジェクトは延長を保持し、新しいプロジェクトは Merchant API のみを呼び出します) |
オプション 1: 既存の Google Cloud プロジェクトを維持する
Content API for Shopping と Merchant API の両方に既存の Google Cloud プロジェクトを使用する場合は、このオプションを選択します。
開始する前に、既存のプロジェクトへのアクセス権を確認または復元 します。Google Cloud コンソールにログインし、アカウントに既存のプロジェクトに対する次のいずれかのロールが付与されていることを確認します。
- オーナー(
roles/owner) - 編集者(
roles/editor) - Service Usage 管理者(
roles/serviceusage.serviceUsageAdmin)
- Merchant API を有効にする:
merchantapi.googleapis.comを Google Cloud API ライブラリ またはgcloudコマンドで有効にします。手順ガイドについては、 Merchant Center から API 認証を構成するをご覧ください。 - Google Cloud プロジェクトを Merchant Center に登録する:
デベロッパーとして登録するガイドの手順に沿って、既存のプロジェクトからのリクエストを承認し、
registerGcp
メソッドを呼び出して、既存の Google Cloud プロジェクトをプライマリ
Merchant Center アカウントにリンクします。
registerGcp既存のサービス アカウント キーと承認済みの Content API for Shopping の延長は、変更なしで引き続き機能します。
オプション 2: Content API for Shopping に古い Google Cloud プロジェクトを使用し、Merchant API に新しいプロジェクトを使用する
従来の Content API for Shopping 統合が、古い Google Cloud プロジェクトで有効な認証情報と承認済みの延長を使用してすでに実行されており、新しい Merchant API 統合を別の専用の Google Cloud プロジェクトで構築する場合は、このオプションを選択します。
- Content API for Shopping 統合を古いプロジェクトに維持する: 既存の Content API for Shopping のワークフローと認証情報を古い Google Cloud プロジェクトで実行したままにします。古いプロジェクト ID の延長リクエストが承認された場合、現在の Content API for Shopping 統合は延長された期限まで引き続き機能します。
- Merchant API 専用の新しい Google Cloud プロジェクトを作成する: 新しい Google Cloud プロジェクトを作成し、
merchantapi.googleapis.comを有効にして、新しい Merchant API ワークロードの認証情報(サービス アカウントまたは OAuth 2.0 クライアント ID)を作成します。 - 新しいプロジェクトを登録する:
デベロッパーとして登録するの手順に沿って、
新しいプロジェクトからのリクエストを承認し、
有効なデベロッパーの連絡先メールアドレスを使用して
registerGcpメソッドを呼び出します。サービス アカウントのメールアドレス(.gserviceaccount.comで終わる)は、developerEmailとして使用できません。 - ワークロードを段階的に移行する: Content API for Shopping の 廃止予定日 (または承認された延長の有効期限)の前に、古い Content API for Shopping プロジェクトから新しい Merchant API プロジェクトに API 呼び出しを段階的に移行し、 移行が完了したら 古いプロジェクトを廃止します。
特別なケース: 移行を完了する前に古い Google Cloud プロジェクトへのアクセス権を失った場合
Content API for Shopping は非推奨になったため、Google Cloud API ライブラリに表示されなくなり、新しく作成された Google Cloud プロジェクトで有効にすることはできません 。そのため、既存の Content API for Shopping ワークロードを新しい Google Cloud プロジェクトに移行することはできません。
古いプロジェクトから Content API for Shopping の呼び出しができなくなった場合(認証情報の取り消しやプロジェクトへのアクセス権の復元ができない場合など)は、次のいずれかを行います。
- Google Cloud サポート に連絡して、既存の Google Cloud プロジェクトへのアクセス権を復元する (オプション 1)。
- オプション 2 に沿って、新しい Google Cloud プロジェクトを作成して登録し、影響を受けるワークフローを Merchant API に直接移行する。移行を妨げる重大な問題が発生した場合は、 Merchant API サポートにお問い合わせください。
次のステップ
- デベロッパー登録の要件について詳しくは、 デベロッパーとして登録すると デベロッパー登録に関するよくある質問をご覧ください。
- 従来の認証情報の動作については、 Merchant Center から API 認証を構成するをご覧ください。
- 移行を開始するでサブ API のロールアウトを計画します。
- Content API for Shopping のアクセス延長について詳しくは、 移行の延長をリクエストするをご覧ください。