Чтобы использовать Merchant API, необходимо связать облачный проект Google Cloud с основным аккаунтом Merchant Center, зарегистрировавшись в качестве разработчика. В процессе интеграции вам может потребоваться изменить идентификатор проекта Google Cloud, связанный с вашим аккаунтом Merchant Center, управлять несколькими проектами в разных средах или перенести проекты при переходе с Content API for Shopping.
Из этого руководства вы узнаете:
- Измените или замените идентификатор проекта Google Cloud для существующей интеграции Merchant API без простоев.
- Отмените регистрацию облачного проекта Google Cloud в одном аккаунте Merchant Center и зарегистрируйте его в другом.
- Выберите и реализуйте подходящую стратегию перехода на облачный проект Google Cloud, если вы переходите с Content API for Shopping на Merchant API.
Требования
Прежде чем управлять проектами Google Cloud или переносить их, убедитесь, что вы выполнили требования для регистрации разработчика. Подробную информацию можно найти в разделе Требования руководства Регистрация в качестве разработчика.
Основные правила и ограничения
При планировании изменений в проектах Google Cloud учитывайте следующие правила:
- Регистрация проектов по принципу «один ко многим». С одним основным аккаунтом Merchant Center можно связать несколько облачных проектов Google Cloud. Однако каждый проект Google Cloud можно зарегистрировать только в одном основном аккаунте Merchant Center. Если вы попытаетесь зарегистрировать проект, который уже связан с другим аккаунтом Merchant Center, то получите ошибку
ALREADY_EXISTS(409 Conflict) с причинойDUPLICATE_PROJECT_REGISTRATION. - Конфиденциальность владельца облачного проекта. Из соображений безопасности и конфиденциальности служба поддержки Google Покупок и Merchant API не может раскрывать адреса электронной почты владельца или администратора облачного проекта Google Cloud. Если вы потеряете доступ к проекту, обратитесь в службу поддержки Google Cloud.
- Продление доступа к Content API for Shopping действует только для одного проекта. Если вы получили одобрение на продление доступа к Content API for Shopping, оно распространяется только на идентификатор проекта Google Cloud, указанный в запросе. Расширения не переносятся в новые проекты Google Cloud автоматически.
Как изменить идентификатор проекта Google Cloud для аккаунта Merchant API
Если вы уже используете Merchant API и вам нужно перенести интеграцию в новый облачный проект Google Cloud, например из-за реорганизации, правил ротации учетных данных или потери доступа с правами администратора к старому проекту, вы можете сделать это без времени простоя. Поскольку аккаунт Merchant Center поддерживает несколько зарегистрированных проектов Google Cloud одновременно, вы можете зарегистрировать новый проект, прежде чем закрывать старый.
Шаг 1. Создайте и настройте новый проект Google Cloud
- Создайте новый проект в консоли Google Cloud. Подробные инструкции приведены в статье Как создать проект Google Cloud.
- Включите Merchant API (
merchantapi.googleapis.com) в новом проекте. Подробнее о том, как включить Merchant API, можно узнать в разделе Создание проекта Google Cloud. - Создайте учетные данные для аутентификации (сервисный аккаунт или идентификатор клиента OAuth 2.0) в новом проекте Google Cloud.
- Добавьте адрес электронной почты, используемый для аутентификации (например, адрес нового сервисного аккаунта), в качестве пользователя с ролью
ADMINв основном аккаунте Merchant Center.
Шаг 2. Зарегистрируйте новый проект Google Cloud
Выполните аутентификацию, используя учетные данные из нового облачного проекта Google Cloud, и вызовите метод accounts.developerRegistration.registerGcp, чтобы связать новый проект с основным аккаунтом Merchant Center. Подробные инструкции приведены в разделе Вызов регистрации статьи Как зарегистрироваться в качестве разработчика.
Шаг 3. Проверьте зарегистрированные проекты 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.ACCESS_TOKEN– токен авторизации для вызова API.
В ответе возвращается ресурс DeveloperRegistration с числовыми номерами всех связанных облачных проектов Google Cloud в поле gcpIds:
{
"name": "accounts/ACCOUNT_ID/developerRegistration",
"gcpIds": [
"123456789012",
"987654321098"
]
}
Вы также можете проверить, с каким аккаунтом Merchant Center зарегистрирован вызывающий облачный проект Google Cloud, с помощью метода 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.OLD_PROJECT_ACCESS_TOKEN– токен авторизации из старого облачного проекта Google Cloud для вызова 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"
Как связать зарегистрированный облачный проект Google Cloud с другим аккаунтом Merchant Center
Поскольку облачный проект Google Cloud можно зарегистрировать только в одном основном аккаунте Merchant Center, выполните следующие действия, чтобы переназначить существующий проект из одного аккаунта Merchant Center (OLD_ACCOUNT_ID) в другой (NEW_ACCOUNT_ID). Рекомендации по выбору аккаунта Merchant Center для регистрации проекта приведены в разделе Важные замечания.
- Выполните аутентификацию, используя учетные данные облачного проекта Google Cloud, у которого есть доступ к
OLD_ACCOUNT_ID, и вызовитеunregisterGcpдляaccounts/OLD_ACCOUNT_ID/developerRegistration. - Убедитесь, что у аутентифицирующего идентификатора есть роль
ADMINвNEW_ACCOUNT_IDи что уNEW_ACCOUNT_IDесть подтвержденный сайт. - Вызовите
registerGcpвaccounts/NEW_ACCOUNT_ID/developerRegistration, используя учетные данные из того же облачного проекта Google Cloud. Если уNEW_ACCOUNT_IDещё нет пользователя с рольюAPI_DEVELOPER, передайте действительный адрес электронной почты пользователя в поле запросаdeveloperEmail. Адреса электронной почты сервисных аккаунтов, заканчивающиеся на.gserviceaccount.com, нельзя использовать в качествеdeveloperEmail.
Как переносить облачные проекты Google Cloud при переходе с Content API for Shopping
При переходе с Content API for Shopping на Merchant API вы можете столкнуться с ограничениями доступа к устаревшему облачному проекту Google Cloud. Например, если исходные ключи API были настроены непосредственно через устаревший рабочий процесс аутентификации Merchant Center или если исходный владелец проекта покинул вашу организацию.
В зависимости от того, хотите ли вы сохранить существующий проект или использовать новый проект для Merchant API, оставив Content API for Shopping в старом проекте, выберите один из двух вариантов ниже.
Выберите стратегию проекта переноса
| Сценарий | Требуется ли доступ с правами администратора к старому проекту? | API, которые нужно включить | Требуется ли расширение Content API for Shopping для нового проекта? |
|---|---|---|---|
| Вариант 1. Сохраните существующий проект | Да (или восстановить с помощью службы поддержки Google Cloud) | Включите Merchant API в существующем проекте (Content API for Shopping уже включен). | Нет (существующее расширение со старым идентификатором проекта останется действительным) |
| Вариант 2. Сохраните старый проект для Content API for Shopping и создайте новый для Merchant API | Нет | Включите Merchant API в новом проекте (не отключайте Content API for Shopping в старом проекте). | Нет (старый проект сохраняет расширение, а новый вызывает только Merchant API). |
Вариант 1. Оставить существующий проект Google Cloud
Выберите этот вариант, если хотите использовать существующий проект Google Cloud для Content API for Shopping и Merchant API.
Прежде чем начать, подтвердите или восстановите доступ к существующему проекту. Войдите в консоль Google Cloud и убедитесь, что у вашего аккаунта есть любая из следующих ролей в существующем проекте:
- Владелец (
roles/owner), - Редактор (
roles/editor) - Администратор использования сервисов (
roles/serviceusage.serviceUsageAdmin)
- Включите Merchant API. Включите
merchantapi.googleapis.comв библиотеке Google Cloud API или с помощью командыgcloud. Подробные инструкции вы найдете в статье Как настроить аутентификацию API в Merchant Center. - Зарегистрируйте облачный проект Google Cloud в Merchant Center.
Следуйте инструкциям в руководстве Регистрация в качестве разработчика, чтобы авторизовать запросы из существующего проекта, и вызовите метод
registerGcp, чтобы связать существующий облачный проект Google Cloud с основным аккаунтом Merchant Center. Существующие ключи сервисных аккаунтов и одобренное расширение Content API for Shopping продолжат работать без изменений.
Вариант 2. Использовать старый облачный проект Google Cloud для Content API for Shopping и новый проект для Merchant API
Выберите этот вариант, если ваша интеграция с устаревшим Content API for Shopping уже работает с действительными учетными данными и одобренным расширением в старом облачном проекте Google Cloud и вы хотите создать новую интеграцию с Merchant API в отдельном выделенном облачном проекте Google Cloud:
- Оставить интеграцию Content API for Shopping в старом облачном проекте. Рабочие процессы и учетные данные Content API for Shopping останутся в старом облачном проекте Google Cloud. Если ваш запрос на продление для старого идентификатора проекта был одобрен, текущая интеграция Content API for Shopping продолжит работать до продленного срока.
- Создайте новый облачный проект Google Cloud специально для Merchant API. Создайте новый облачный проект Google Cloud, включите
merchantapi.googleapis.comи создайте учетные данные (сервисный аккаунт или идентификатор клиента OAuth 2.0) для новых рабочих нагрузок Merchant API. - Зарегистрируйте новый проект. Следуйте инструкциям в разделе Зарегистрируйтесь в качестве разработчика, чтобы авторизовать запросы из нового проекта и вызвать метод
registerGcpс действительным адресом электронной почты разработчика. Адреса электронной почты сервисных аккаунтов (заканчивающиеся на.gserviceaccount.com) нельзя использовать в качествеdeveloperEmail. - Переносите рабочие нагрузки постепенно. Переводите вызовы API из старого проекта Content API for Shopping в новый проект Merchant API постепенно, до даты прекращения поддержки Content API for Shopping (или до истечения срока действия одобренного продления). После завершения переноса закройте старый проект.
Особый случай: вы потеряли доступ к старому облачному проекту Google Cloud до завершения переноса
Поскольку Content API для Покупок устарел, он больше не указан в библиотеке API Google Cloud и не может быть включен в недавно созданных проектах Google Cloud. Поэтому вы не можете самостоятельно перенести существующие рабочие нагрузки Content API for Shopping в новый облачный проект Google Cloud.
Если вы больше не можете выполнять вызовы Content API for Shopping из старого проекта (например, из-за отозванных учетных данных или невозможности восстановить доступ к проекту):
- Обратитесь в службу поддержки Google Cloud, чтобы восстановить доступ к существующему проекту Google Cloud (вариант 1).
- Следуйте инструкциям из варианта 2, чтобы создать и зарегистрировать новый проект Google Cloud и перенести затронутые рабочие процессы непосредственно в Merchant API. Если вы столкнулись с критической проблемой, которая мешает переносу, обратитесь в службу поддержки Merchant API.
Дальнейшие действия
- Подробнее о требованиях к регистрации разработчиков можно узнать в статьях Зарегистрируйтесь в качестве разработчика и Часто задаваемые вопросы о регистрации разработчиков.
- Подробнее о том, как настроить аутентификацию API в Merchant Center…
- Спланируйте развертывание дочерних API, следуя инструкциям в разделе Как начать перенос.
- Подробнее о том, как запросить продление доступа к Content API for Shopping, рассказывается в статье Запросите продление переноса.