Zarządzanie projektami w chmurze Google Cloud i ich przenoszenie

Aby korzystać z interfejsu Merchant API, musisz połączyć projekt w chmurze Google Cloud z podstawowym kontem Merchant Center, przeprowadzając rejestrację programisty. W trakcie cyklu życia integracji może być konieczna zmiana identyfikatora projektu Google Cloud powiązanego z kontem Merchant Center, zarządzanie wieloma projektami w różnych środowiskach lub przeniesienie projektów podczas migracji z Content API for Shopping.

Z tego przewodnika dowiesz się, jak:

  • Zmień lub obróć identyfikator projektu Google Cloud dla istniejącej integracji z interfejsem Merchant API bez przestojów.
  • Wyrejestruj projekt Google Cloud z jednego konta Merchant Center i zarejestruj go na innym koncie Merchant Center.
  • Wybierz i zastosuj odpowiednią strategię przenoszenia projektu Google Cloud, jeśli przechodzisz z Content API for Shopping na Merchant API.

Wymagania wstępne

Zanim zaczniesz zarządzać projektami Google Cloud lub je przenosić, sprawdź, czy spełniasz wymagania wstępne dotyczące rejestracji dewelopera. Więcej informacji znajdziesz w sekcji Wymagania wstępne w przewodniku Rejestrowanie się jako deweloper.

Najważniejsze zasady i ograniczenia

Podczas planowania zmian w projektach Google Cloud pamiętaj o tych zasadach:

  • Rejestracja projektu w modelu jeden do wielu: z jednym podstawowym kontem Merchant Center można jednocześnie zarejestrować wiele projektów Google Cloud. Każdy projekt Google Cloud może być jednak zarejestrowany tylko na jednym podstawowym koncie Merchant Center. Próba zarejestrowania projektu, który jest już połączony z innym kontem Merchant Center, zwraca błąd ALREADY_EXISTS (409 Conflict) z przyczyną DUPLICATE_PROJECT_REGISTRATION.
  • Prywatność właściciela projektu: ze względów bezpieczeństwa i ochrony prywatności zespół pomocy Google Shopping i Merchant API nie może ujawnić adresów e-mail właściciela ani administratora projektu w chmurze Google. Jeśli utracisz dostęp do projektu, skontaktuj się z zespołem pomocy Google Cloud.
  • Rozszerzenia dotyczące wyłączenia Content API for Shopping są powiązane z konkretnym projektem: jeśli otrzymasz zgodę na rozszerzony dostęp do Content API for Shopping, będzie on dotyczyć tylko konkretnego identyfikatora projektu Google Cloud podanego w Twojej prośbie. Rozszerzenia nie są automatycznie przenoszone do nowych projektów Google Cloud.

Zmienianie identyfikatora projektu Google Cloud na koncie Merchant API

Jeśli korzystasz już z interfejsu Merchant API i musisz przełączyć integrację na nowy projekt w chmurze Google Cloud, na przykład z powodu restrukturyzacji organizacji, zasad rotacji danych logowania lub utraty dostępu administracyjnego do starszego projektu, możesz przenieść projekty bez przestojów. Konto Merchant Center obsługuje jednocześnie wiele zarejestrowanych projektów Google Cloud, więc możesz zarejestrować nowy projekt przed wycofaniem starego.

Krok 1. Utwórz i skonfiguruj nowy projekt Google Cloud

  1. Utwórz nowy projekt w konsoli Google Cloud. Szczegółowe instrukcje znajdziesz w artykule Tworzenie projektu Google Cloud.
  2. Włącz interfejs Merchant API (merchantapi.googleapis.com) w nowym projekcie. Zobacz sekcję Włączanie interfejsu Merchant API w artykule Tworzenie projektu w chmurze Google.
  3. Utwórz dane uwierzytelniające (konto usługi lub identyfikator klienta OAuth 2.0) w nowym projekcie Google Cloud.
  4. Dodaj adres e-mail używany do uwierzytelniania (np. adres e-mail nowego konta usługi) jako użytkownika z rolą ADMIN na swoim podstawowym koncie Merchant Center.

Krok 2. Zarejestruj nowy projekt Google Cloud

Uwierzytelnij się za pomocą danych logowania z nowego projektu Google Cloud i wywołaj metodę accounts.developerRegistration.registerGcp, aby połączyć nowy projekt z podstawowym kontem Merchant Center. Szczegółowe instrukcje znajdziesz w sekcji Wywołanie rejestracji w artykule Rejestrowanie konta dewelopera.

Krok 3. Sprawdź zarejestrowane projekty Google Cloud

Aby sprawdzić, czy zarówno dotychczasowe, jak i nowe projekty w chmurze Google Cloud są połączone z kontem Merchant Center, wywołaj metodę accounts.developerRegistration.getDeveloperRegistration:

GET https://merchantapi.googleapis.com/accounts/v1/accounts/ACCOUNT_ID/developerRegistration
Authorization: Bearer ACCESS_TOKEN

Zastąp te elementy:

  • ACCOUNT_ID: Twój identyfikator w Merchant Center,
  • ACCESS_TOKEN: token autoryzacji do wywołania interfejsu API.

Odpowiedź zwraca zasób DeveloperRegistration z numerycznymi numerami projektów Google Cloud wszystkich połączonych projektów w chmurze w polu gcpIds:

{
  "name": "accounts/ACCOUNT_ID/developerRegistration",
  "gcpIds": [
    "123456789012",
    "987654321098"
  ]
}

Możesz też sprawdzić, na którym koncie Merchant Center jest zarejestrowany wywołujący projekt w chmurze Google Cloud, wywołując metodę accounts.developerRegistration.getAccountForGcpRegistration:

GET https://merchantapi.googleapis.com/accounts/v1/accounts:getAccountForGcpRegistration
Authorization: Bearer ACCESS_TOKEN

Zastąp te elementy:

  • ACCESS_TOKEN: token autoryzacji wygenerowany przy użyciu danych logowania z projektu w chmurze Google Cloud, który chcesz sprawdzić.

Krok 4. Przełącz ruch i wyrejestruj stary projekt Google Cloud

  1. Zaktualizuj konfigurację aplikacji, aby używać danych logowania z nowego projektu Google Cloud. Ponieważ oba projekty są zarejestrowane, zadania są przenoszone bez zakłóceń.
  2. Gdy cały ruch będzie korzystać z nowego projektu, możesz opcjonalnie usunąć link do starego projektu, uwierzytelniając się za pomocą danych logowania do starego projektu Google Cloud i wywołując metodę 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

Zastąp te elementy:

  • ACCOUNT_ID: Twój identyfikator w Merchant Center,
  • OLD_PROJECT_ACCESS_TOKEN: token autoryzacji ze starego projektu w chmurze Google, który umożliwia wywołanie interfejsu API.

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"

Ponowne przypisywanie zarejestrowanego projektu Google Cloud do innego konta Merchant Center

Projekt Google Cloud może być zarejestrowany tylko na jednym podstawowym koncie Merchant Center naraz. Aby przypisać istniejący projekt w chmurze z jednego konta Merchant Center (OLD_ACCOUNT_ID) do innego (NEW_ACCOUNT_ID), wykonaj te czynności. Wskazówki dotyczące wyboru konta Merchant Center, na którym chcesz zarejestrować projekt, znajdziesz w sekcji Ważne kwestie:

  1. Uwierzytelnij się za pomocą danych logowania z projektu Google Cloud, który ma dostęp do OLD_ACCOUNT_ID, i wywołaj unregisterGcp w accounts/OLD_ACCOUNT_ID/developerRegistration.
  2. Sprawdź, czy tożsamość uwierzytelniająca ma rolę ADMIN w NEW_ACCOUNT_ID i czy NEW_ACCOUNT_ID ma zweryfikowaną witrynę.
  3. Wywołaj registerGcp na accounts/NEW_ACCOUNT_ID/developerRegistration, używając danych logowania z tego samego projektu Google Cloud. Jeśli w usłudze NEW_ACCOUNT_ID nie ma jeszcze użytkownika z rolą API_DEVELOPER, podaj prawidłowy adres e-mail użytkownika w polu żądania developerEmail. Adresy e-mail kont usługi kończące się na .gserviceaccount.com nie mogą być używane jako developerEmail.

Przenoszenie projektów Google Cloud podczas migracji z Content API for Shopping

Podczas migracji z Content API for Shopping na Merchant API możesz napotkać ograniczenia dostępu do starszego projektu w chmurze Google Cloud, na przykład jeśli oryginalne klucze interfejsu API zostały skonfigurowane bezpośrednio w starszym procesie uwierzytelniania Merchant Center lub jeśli pierwotny właściciel projektu opuścił organizację.

W zależności od tego, czy chcesz zachować istniejący projekt, czy użyć nowego projektu dla Merchant API, zachowując Content API for Shopping w starym projekcie, wybierz jedną z tych 2 opcji.

Wybór strategii projektu migracji

Scenariusz Czy wymagany jest dostęp administracyjny do starego projektu? Interfejsy API do włączenia Czy w nowym projekcie wymagane jest rozszerzenie Content API for Shopping?
Opcja 1. Zachowaj dotychczasowy projekt Tak (lub odzyskaj za pomocą zespołu pomocy Google Cloud) Włączanie interfejsu Merchant API w istniejącym projekcie (interfejs Content API for Shopping jest już włączony) Nie (istniejące rozszerzenie w starym identyfikatorze projektu pozostaje ważne)
Opcja 2. Zachowanie starego projektu dla Content API for Shopping i użycie nowego projektu dla interfejsu Merchant API Nie Włącz Merchant API w nowym projekcie (pozostaw Content API for Shopping włączony w starym projekcie). Nie (stary projekt zachowuje rozszerzenie, nowy projekt wywołuje tylko Merchant API).

Opcja 1. Zachowaj dotychczasowy projekt Google Cloud

Wybierz tę opcję, jeśli chcesz używać istniejącego projektu Google Cloud zarówno w przypadku Content API for Shopping, jak i Merchant API.

Zanim zaczniesz, potwierdź lub odzyskaj dostęp do dotychczasowego projektu. Zaloguj się w konsoli Google Cloud i sprawdź, czy Twoje konto ma dowolną z tych ról w istniejącym projekcie:

  • Właściciel (roles/owner),
  • Edytujący (roles/editor)
  • Administrator korzystania z usług (roles/serviceusage.serviceUsageAdmin)
  1. Włącz Merchant API: włącz merchantapi.googleapis.com w bibliotece interfejsów API Google Cloud lub za pomocą polecenia gcloud. Szczegółowe instrukcje znajdziesz w artykule Konfigurowanie uwierzytelniania interfejsu API w Merchant Center.
  2. Zarejestruj projekt Google Cloud w Merchant Center: wykonaj czynności opisane w przewodniku Zarejestruj się jako programista, aby autoryzować żądania z istniejącego projektu, i wywołaj metodę registerGcp, aby połączyć istniejący projekt Google Cloud z podstawowym kontem Merchant Center. Dotychczasowe klucze konta usługi i zatwierdzone rozszerzenie Content API for Shopping będą nadal działać bez zmian.

Opcja 2. Używanie starego projektu Google Cloud w przypadku Content API for Shopping i nowego projektu w przypadku Merchant API

Wybierz tę opcję, jeśli starsza integracja z Content API for Shopping działa już z prawidłowymi danymi logowania i zatwierdzonym rozszerzeniem w starym projekcie w chmurze Google, a nową integrację z Merchant API chcesz utworzyć w osobnym, dedykowanym projekcie w chmurze Google:

  1. Zachowanie integracji Content API for Shopping w starym projekcie: pozostaw istniejące przepływy pracy i dane logowania Content API for Shopping w starym projekcie Google Cloud. Jeśli Twoja prośba o przedłużenie terminu dla starego identyfikatora projektu została zatwierdzona, obecna integracja z Content API for Shopping będzie działać do przedłużonego terminu.
  2. Utwórz nowy projekt Google Cloud wyłącznie na potrzeby Merchant API: utwórz nowy projekt Google Cloud, włącz merchantapi.googleapis.com i utwórz dane logowania (konto usługi lub identyfikator klienta OAuth 2.0) dla nowych zadań Merchant API.
  3. Zarejestruj nowy projekt: wykonaj czynności opisane w artykule Rejestrowanie konta dewelopera, aby autoryzować żądania z nowego projektu i wywołać metodę registerGcp z prawidłowym kontaktowym adresem e-mail dewelopera. Adresy e-mail kont usługi (kończące się na .gserviceaccount.com) nie mogą być używane jako developerEmail.
  4. Stopniowo przenoś zadania: stopniowo przenoś wywołania interfejsu API ze starego projektu Content API for Shopping do nowego projektu Merchant API przed zaplanowaną datą wycofania Content API for Shopping (lub przed wygaśnięciem zatwierdzonego rozszerzenia) i wycofaj stary projekt po zakończeniu migracji.

Przypadek szczególny: utrata dostępu do starego projektu w chmurze Google Cloud przed zakończeniem migracji

Interfejs Content API for Shopping został wycofany, więc nie jest już dostępny w bibliotece interfejsów Google Cloud API i nie można go włączyć w nowo utworzonych projektach w chmurze Google Cloud. W związku z tym nie możesz samodzielnie przenieść istniejących zadań Content API for Shopping do nowego projektu Google Cloud.

Jeśli nie możesz już wykonywać wywołań Content API for Shopping ze starego projektu (np. z powodu unieważnienia danych logowania lub utraty dostępu do projektu):

  1. Skontaktuj się z zespołem pomocy Google Cloud, aby odzyskać dostęp do dotychczasowego projektu Google Cloud (opcja 1).
  2. Wykonaj czynności opisane w sekcji Opcja 2, aby utworzyć i zarejestrować nowy projekt w chmurze Google Cloud i przenieść odpowiednie przepływy pracy bezpośrednio do interfejsu Merchant API. Jeśli napotkasz krytyczny problem uniemożliwiający migrację, skontaktuj się z zespołem pomocy Merchant API.

Dalsze kroki