Registering as a developer is a mandatory, one-time setup process that links your Google Cloud project to your Merchant Center account, and registers your developer contact information with Google. This lets Google send critical service announcements and mandatory updates to the relevant technical contacts that you provide.
This document is part of a multi-part series about getting started with Merchant API. If you already have registered with Merchant API, you can skip to the next section: Insert your first product
Предварительные требования
Прежде чем регистрироваться для использования API для продавцов, убедитесь, что вы соответствуете следующим требованиям:
- Учетная запись Merchant Center : Вам необходима существующая учетная запись Merchant Center. Регистрация поддерживается только для рабочих учетных записей. Тестовые учетные записи не подходят для регистрации разработчиков.
- Подтвержденная домашняя страница : В вашем аккаунте Merchant Center должен быть подтвержденный веб-сайт . Это подтверждает право собственности на домен, связанный с вашим бизнесом.
- Admin Access on the Merchant Center account : The email or service account you use to authorize the registration call must have
ADMINaccess type in the Merchant Center account you are registering to. For more information, see Authorizing requests to Merchant API . - Google Cloud project ID : Your application must be associated with a dedicated Google Cloud project to provide credentials for authentication. For details about where to find the project ID, see Find the project name, number, and ID .
- A valid email address associated with a Google account that you provide as the developer point of contact for updates from Google. Must not be a service account email. You can use an email address that is already part of the Merchant Center account or a new one.
Зарегистрируйтесь как разработчик в Merchant API.
Для использования Merchant API необходимо зарегистрировать контактную информацию разработчика и проект Google Cloud в своей учетной записи Merchant Center с помощью метода registerGcp .
Whether you are working with multiple merchant accounts or not, you perform the registration operation once for each Google Cloud project you intend to use . If you are working with multiple Google Cloud projects , you can register any or all of them to the same Merchant Center Account.
Преимущества регистрации
Регистрация предоставляет следующие преимущества:
- Technical contact creation : It creates a technical contact in Merchant Center. Google sends important API-specific updates to the technical contact, such as service announcements and new features information.
- Управление несколькими торговыми счетами : позволяет вам выступать в качестве контактного лица разработчика для всех управляемых вами торговых счетов.
За исключением регистрации, любые вызовы к Merchant API из незарегистрированного проекта Google Cloud блокируются, возвращая код ошибки 401 со статусом UNAUTHENTICATED и следующим сообщением об ошибке:
GCP project with id {GCP_ID} and number {GCP_NUMBER} is not registered with the merchant account.
Follow these steps https://developers.google.com/merchant/api/guides/quickstart#register_as_a_developer
to register the GCP project with the merchant account then try calling the API again in 5 minutes.
Важные соображения
- One-time setup for each Google Cloud project : Registration is a one-time setup for each Google Cloud project, and it applies to all users and service accounts within the Google Cloud project. Make sure that Merchant API is enabled in your Google Cloud project.
- Каждый проект Google Cloud может быть зарегистрирован только в одной учетной записи Merchant Center одновременно : если вы попытаетесь зарегистрировать один проект Google Cloud в нескольких учетных записях Merchant Center одновременно, вы получите ошибку
ALREADY_REGISTERED. Используйте один и тот же адрес электронной почты разработчика для регистрации. Обратите внимание, что к одной и той же учетной записи Merchant Center можно зарегистрировать несколько проектов Google Cloud. Укажите правильную учетную запись для третьих лиц (3P), управляющих несколькими продавцами: Для обеспечения долгосрочной стабильности и во избежание сбоев в работе сервиса третьим лицам, представляющим или управляющим несколькими продавцами, необходимо использовать соответствующую структуру учетных записей в экосистеме Google. Мы рекомендуем зарегистрировать учетную запись, которая отражает идентичность вашей компании, в зависимости от типа вашего бизнеса:
- Marketplaces with an existing advanced account: If your business operates as a marketplace and already has an advanced account representing the entire platform, you should use this existing account ID.
- Сервисы сравнения цен (CSS): Если вы являетесь сервисом сравнения цен, используйте свой уникальный идентификатор учетной записи CSS или идентификатор групповой учетной записи CSS.
- Агентства, разработчики и другие сторонние поставщики услуг: Если вы являетесь сторонним поставщиком услуг, например, агентством или сторонним разработчиком, управляете несколькими торговыми счетами и у вас нет единого идентификатора Merchant Center, представляющего вашу компанию, вам следует создать новый основной аккаунт Merchant Center и запросить его преобразование в расширенный аккаунт . Расширенные аккаунты могут управлять субсчетами и обеспечивать необходимую структуру для работы со сторонними поставщиками услуг.
В таблице ниже приведены рекомендации для различных типов партнеров:
Тип партнера Рекомендуемый аккаунт для регистрации Торговые площадки Ваш основной (или самый крупный) расширенный аккаунт. Рекламные агентства Отдельный аккаунт или расширенный аккаунт, представляющий вашу компанию. Если вы только начинаете работать с Merchant API, мы рекомендуем создать отдельный аккаунт. Сервисы сравнения цен (CSS) Идентификатор вашей групповой учетной записи CSS или идентификатор конкретной учетной записи CSS, в зависимости от того, представляет ли учетная запись всю группу CSS или только определенный CSS в группе. Не используйте расширенную учетную запись CSS. Торговцы или бренды Ваш основной аккаунт, представляющий ваш бренд. Может быть как автономным, так и расширенным аккаунтом. Поставщики данных для точек продаж (POS)/инвентаризации Ваш основной (или самый крупный) расширенный аккаунт. Другие 3P Если у вас есть аккаунт в Merchant Center, вы можете использовать его для регистрации. В противном случае создайте отдельный корпоративный аккаунт. Затем подтвердите свой веб-сайт. Perform registration only for your primary Merchant Center : You perform developer registration using only your primary Merchant Center account, and you become the developer contact for all the linked Merchant Center subaccounts. Don't perform registration for each of your Merchant Center subaccounts.

На приведенной выше диаграмме показана настройка регистрации при использовании нескольких проектов Google Cloud и одного основного Merchant Center с возможностью добавления нескольких субсчетов Merchant Center.
Authentication requirement : When performing registration, the authenticated Merchant Center account (which is the account where your credentials reside), must match the impersonated Merchant Center account (which is the account you are registering). You can't register for a subaccount if you are authenticated with a separate parent or manager account.
Регистрация разрешена только для подтвержденных учетных записей на сайтах : регистрация разрешена только для учетных записей Merchant Center с подтвержденным сайтом .
Регистрация тестовых аккаунтов невозможна : Вы не можете зарегистрировать тестовые аккаунты.
После регистрации адреса электронной почты разработчика :
- Вы можете выполнять вызовы API для продавцов в течение 5 минут после регистрации.
- If the email belongs to an existing Merchant Center user, they are granted the
API developerrole. Otherwise, a new user is created in the Merchant Center and they must accept an invitation within 14 days to prevent it from expiring and from having to restart the registration process. You complete the registration process only after the user clicked the invitation link.
Сделайте звонок для регистрации.
Регистрация осуществляется путем вызова метода registerGcp . У вас есть два варианта выполнения вызова регистрации:
- Option 1: Direct API calls You make raw requests to the API endpoints directly, typically over HTTP(S). You manually handle aspects like forming the request body, setting headers (including authentication), and parsing the response.
- Option 2: Client libraries You use the prebuilt libraries that offer a more convenient, language-idiomatic way to interact with the Merchant API. They handle authentication and authorization, and offer a convenient way of abstracting away the underlying HTTP communication. Official code samples are available to get you started quickly.
Разрешение на проведение регистрационного звонка
Как описано на шаге «Авторизация запросов к API продавца» , у вас есть два различных сценария аутентификации:
- OAuth 2.0 : для сторонних поставщиков или агентств, управляющих несколькими торговыми счетами.
- Сервисные аккаунты : для доступа к вашему собственному аккаунту в Merchant Center.
Для получения дополнительной информации об авторизации вызова регистрации см. раздел «Как выполнить аутентификацию и авторизацию для вызова регистрации?».
Звонок для регистрации
В приведенных ниже примерах регистрация осуществляется с помощью прямых вызовов API или клиентских библиотек.
Вы выполняете вызов регистрации, используя метод registerGcp .
POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/developerRegistration:registerGcp
Content-Type: application/json
Authorization: Bearer {ACCESS_TOKEN}"
{
"developerEmail": "{DEVELOPER_EMAIL}"
}
Замените следующее:
-
ACCOUNT_ID: ваш идентификатор Merchant Center -
ACCESS_TOKEN: токен авторизации для выполнения вызова API. -
DEVELOPER_EMAIL: адрес электронной почты основного технического контактного лица.
В случае успешного выполнения запроса возвращается ресурс DeveloperRegistration , подтверждающий успешное связывание:
"name": "accounts/{ACCOUNT_ID}/developerRegistration",
"gcpIds": ["{GOOGLE_CLOUD_PROJECT_ID}"]
Python
Загрузите примеры и следуйте инструкциям из раздела «Примеры Google Merchant API для Python», чтобы настроить клиентские библиотеки Python.
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import DeveloperRegistrationServiceClient
from google.shopping.merchant_accounts_v1 import RegisterGcpRequest
def register_gcp(account_id: str, developer_email: str) -> None:
"""Registers the GCP project used to call the Merchant API with a developer email.
Args:
account_id: The ID of your Merchant Center account.
developer_email: The email address of the developer to register.
"""
# Get OAuth credentials.
credentials = generate_user_credentials.main()
# Create a client to the Developer Registration Service.
client = DeveloperRegistrationServiceClient(credentials=credentials)
# The name has the format: accounts/{account}/developerRegistration
name = f"accounts/{account_id}/developerRegistration"
# Create the request to register the GCP project.
request = RegisterGcpRequest(
name=name,
developer_email=developer_email,
)
# Make the API call and handle potential errors.
try:
print("Sending RegisterGcp request:")
response = client.register_gcp(request=request)
print("Registered GCP project successfully:")
print(response)
except RuntimeError as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
# Your Merchant Center account ID.
# This can be found in the Merchant Center UI.
_account_id = configuration.Configuration().read_merchant_info()
# The developer email to associate with the GCP project.
_developer_email = "YOUR_EMAIL_HERE"
register_gcp(_account_id, _developer_email)
Java
Загрузите примеры и следуйте инструкциям из Google Merchant API Java Samples для настройки клиентских библиотек Java.
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.DeveloperRegistration;
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.RegisterGcpRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to register the GCP project used to call the Merchant API with a
* developer email.
*/
public class RegisterGcpSample {
public static DeveloperRegistration registerGcp(Config config, String developerEmail) 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 register the GCP project with the developer email.
RegisterGcpRequest request =
RegisterGcpRequest.newBuilder().setName(name).setDeveloperEmail(developerEmail).build();
System.out.println("Sending RegisterGcp request:");
DeveloperRegistration response = developerRegistrationServiceClient.registerGcp(request);
System.out.println(response);
return response;
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
String developerEmail = "YOUR_EMAIL_HERE"; // Replace with your email
registerGcp(config, developerEmail);
}
}
PHP
Загрузите примеры и следуйте инструкциям из раздела «Примеры PHP для Google Merchant API» , чтобы настроить клиентские библиотеки PHP.
require_once __DIR__ . '/../../../../vendor/autoload.php';
require_once __DIR__ . '/../../../Authentication/Authentication.php';
require_once __DIR__ . '/../../../Authentication/Config.php';
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\DeveloperRegistrationServiceClient;
use Google\Shopping\Merchant\Accounts\V1\RegisterGcpRequest;
/**
* This class demonstrates how to register the GCP project used to call the
* Merchant API with a developer email.
*/
class RegisterGcpSample
{
/**
* A helper function to create the name string for the
* DeveloperRegistration.
*
* @param string $accountId The merchant account ID.
* @return string The name, which has the format:
* `accounts/{account}/developerRegistration`
*/
private static function getName(string $accountId): string
{
return sprintf("accounts/%s/developerRegistration", $accountId);
}
/**
* Registers the GCP project with a developer email.
*
* @param array $config The configuration data for authentication and account ID.
* @param string $developerEmail The email of the developer to register.
*/
public static function registerGcpSample(array $config, string $developerEmail): void
{
// Obtains OAuth credentials from the configuration file.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates a configuration object for the client.
$options = ['credentials' => $credentials];
// Creates the DeveloperRegistrationServiceClient.
$developerRegistrationServiceClient = new DeveloperRegistrationServiceClient($options);
// Creates the name of the developer registration to identify it.
$name = self::getName($config['accountId']);
// Calls the API and handles any network failures.
try {
// Creates a request to register the GCP project with the developer email.
$request = new RegisterGcpRequest([
'name' => $name,
'developer_email' => $developerEmail
]);
printf("Sending RegisterGcp request:%s", PHP_EOL);
// The `registerGcp` method returns a `DeveloperRegistration` object
// upon success.
$response = $developerRegistrationServiceClient->registerGcp($request);
print "Successfully registered developer email '$developerEmail' for account {$config['accountId']}.\n";
print_r($response);
} catch (ApiException $e) {
printf("An error occurred: %s%s", $e->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*/
public function callSample(): void
{
$config = Config::generateConfig();
// An email address for a developer to register for the API.
$developerEmail = 'YOUR_EMAIL_HERE'; // Replace with your email
self::registerGcpSample($config, $developerEmail);
}
}
// Executes the sample.
$sample = new RegisterGcpSample();
$sample->callSample();
cURL
curl -X POST "https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/developerRegistration:registerGcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{
"developerEmail": "{DEVELOPER_EMAIL}"
}'
Для завершения регистрации необходимо убедиться, что хотя бы один пользователь в Merchant Center имеет роль API developer . Для этого можно выполнить одно из следующих действий:
- Передайте адрес
developerEmailметодуregisterGcp. - Добавьте нового пользователя с ролью
API developerв пользовательский интерфейс Merchant Center. - Назначьте роль
API developerсуществующему пользователю в пользовательском интерфейсе Merchant Center. - Вызовите метод
accounts.users.create, чтобы создать нового пользователя и назначить ему рольAPI developer. - Назначьте роль
API developerсуществующему пользователю, используя методaccounts.users.patch.
Рекомендации после регистрации
Для обеспечения надежного управления доступом и предотвращения сбоев в работе сервиса в будущем мы рекомендуем вам следовать ряду рекомендаций после завершения первоначальной регистрации:
Предоставьте API developer дополнительные права доступа.
When you register a developer contact, they are automatically assigned the API developer role. This role does not include other permissions necessary for managing the Merchant Center account or making all API calls. We recommend adding the ADMIN or STANDARD roles to your developers to provide comprehensive access.
Для изменения прав доступа пользователя используйте метод accounts.users.patch . Права доступа указываются в поле updateMask тела запроса для добавления или удаления ролей:
PATCH https://merchantapi.googleapis.com/accounts/v1/{ACCOUNT_ID}/users/{DEVELOPER_EMAIL}?update_mask=access_rights
Content-Type: application/json
Authorization: Bearer {ACCESS_TOKEN}"
{
"name": "accounts/{ACCOUNT_ID}/users/{DEVELOPER_EMAIL}",
"access_rights": [ "ADMIN", "API_DEVELOPER" ]
}
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1 import AccessRight
from google.shopping.merchant_accounts_v1 import UpdateUserRequest
from google.shopping.merchant_accounts_v1 import User
from google.shopping.merchant_accounts_v1 import UserServiceClient
FieldMask = field_mask_pb2.FieldMask
_ACCOUNT = configuration.Configuration().read_merchant_info()
def update_user(user_email, user_access_right):
"""Updates a user to make it an admin of the MC account."""
credentials = generate_user_credentials.main()
client = UserServiceClient(credentials=credentials)
# Create user name string
name = "accounts/" + _ACCOUNT + "/users/" + user_email
user = User(name=name, access_rights=[user_access_right])
field_mask = FieldMask(paths=["access_rights"])
try:
request = UpdateUserRequest(user=user, update_mask=field_mask)
print("Sending Update User request")
response = client.update_user(request=request)
print("Updated User Name below")
print(response.name)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
# Modify this email to update the right user
email = "USER_MAIL_ACCOUNT"
access_right = AccessRight.ADMIN
update_user(email, access_right)
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.accounts.v1.AccessRight;
import com.google.shopping.merchant.accounts.v1.UpdateUserRequest;
import com.google.shopping.merchant.accounts.v1.User;
import com.google.shopping.merchant.accounts.v1.UserName;
import com.google.shopping.merchant.accounts.v1.UserServiceClient;
import com.google.shopping.merchant.accounts.v1.UserServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to update a user to make it an admin of the MC account. */
public class UpdateUserSample {
public static void updateUser(Config config, String email, AccessRight accessRight)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
UserServiceSettings userServiceSettings =
UserServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates user name to identify user.
String name =
UserName.newBuilder()
.setAccount(config.getAccountId().toString())
.setEmail(email)
.build()
.toString();
// Create a user with the updated fields.
User user = User.newBuilder().setName(name).addAccessRights(accessRight).build();
FieldMask fieldMask = FieldMask.newBuilder().addPaths("access_rights").build();
try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {
UpdateUserRequest request =
UpdateUserRequest.newBuilder().setUser(user).setUpdateMask(fieldMask).build();
System.out.println("Sending Update User request");
User response = userServiceClient.updateUser(request);
System.out.println("Updated User Name below");
System.out.println(response.getName());
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
String email = "testUser@gmail.com";
// Give the user admin rights. Note that all other rights, like
// PERFORMANCE_REPORTING, would be overwritten in this example
// if the user had those access rights before the update.
AccessRight accessRight = AccessRight.ADMIN;
updateUser(config, email, accessRight);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Accounts\V1\AccessRight;
use Google\Shopping\Merchant\Accounts\V1\UpdateUserRequest;
use Google\Shopping\Merchant\Accounts\V1\User;
use Google\Shopping\Merchant\Accounts\V1\Client\UserServiceClient;
/**
* Updates a user.
*
* @param array $config The configuration data.
* @param string $email The email address of the user.
* @param int $accessRight The access right to grant the user.
* @return void
*/
function updateUser($config, $email, $accessRights): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$userServiceClient = new UserServiceClient($options);
// Creates user name to identify user.
$name = 'accounts/' . $config['accountId'] . "/users/" . $email;
$user = (new User())
->setName($name)
->setAccessRights($accessRights);
$fieldMask = (new FieldMask())->setPaths(['access_rights']);
// Calls the API and catches and prints any network failures/errors.
try {
$request = new UpdateUserRequest([
'user' => $user,
'update_mask' => $fieldMask,
]);
print "Sending Update User request\n";
$response = $userServiceClient->updateUser($request);
print "Updated User Name below\n";
print $response->getName() . "\n";
} catch (ApiException $e) {
print $e->getMessage();
}
}
$config = Config::generateConfig();
$email = "testUser@gmail.com";
$accessRights = [AccessRight::ADMIN];
updateUser($config, $email, $accessRights);
cURL
curl -X PATCH \
"https://merchantapi.googleapis.com/accounts/v1/{ACCOUNT_ID}/users/{USER_EMAIL}?update_mask=access_rights" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{
"access_rights": [
"ADMIN",
"API_DEVELOPER"
]
}'
Добавить контакты разработчиков
To avoid business disruption if the primary developer contact leaves or loses access, it is critical to have redundant contacts. We recommend having at least one additional user with the API developer role in Merchant Center to serve as backup.
You can add a user or update an existing one with the accounts.users service in the Merchant API or the Access and services page in the Merchant Center UI. By proactively adding backup developers, you create a more resilient integration that is not dependent on a single individual.
PATCH https://merchantapi.googleapis.com/products/v1/accounts/{ACCOUNT_ID}/users
Content-Type: application/json
Authorization: Bearer {ACCESS_TOKEN}"
{
"user_id": {USER_EMAIL},
"user": { "access_rights": [ "API_DEVELOPER", "ADMIN" ] }
}
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AccessRight
from google.shopping.merchant_accounts_v1 import CreateUserRequest
from google.shopping.merchant_accounts_v1 import User
from google.shopping.merchant_accounts_v1 import UserServiceClient
_ACCOUNT = configuration.Configuration().read_merchant_info()
def get_parent(account_id):
return f"accounts/{account_id}"
def create_user(user_email):
"""Creates a user for a Merchant Center account."""
# Get OAuth credentials
credentials = generate_user_credentials.main()
# Create a UserServiceClient
client = UserServiceClient(credentials=credentials)
# Create parent string
parent = get_parent(_ACCOUNT)
# Create the request
request = CreateUserRequest(
parent=parent,
user_id=user_email,
user=User(
access_rights=[AccessRight.ADMIN, AccessRight.PERFORMANCE_REPORTING]
),
)
try:
print("Sending Create User request")
response = client.create_user(request=request)
print("Inserted User Name below")
print(response.name)
except RuntimeError as e:
print(e)
if __name__ == "__main__":
# Modify this email to create a new user
email = "USER_MAIL_ACCOUNT"
create_user(email)
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccessRight;
import com.google.shopping.merchant.accounts.v1.CreateUserRequest;
import com.google.shopping.merchant.accounts.v1.User;
import com.google.shopping.merchant.accounts.v1.UserServiceClient;
import com.google.shopping.merchant.accounts.v1.UserServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create a user for a Merchant Center account. */
public class CreateUserSample {
private static String getParent(String accountId) {
return String.format("accounts/%s", accountId);
}
public static void createUser(Config config, String email) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
UserServiceSettings userServiceSettings =
UserServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates parent to identify where to insert the user.
String parent = getParent(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (UserServiceClient userServiceClient = UserServiceClient.create(userServiceSettings)) {
CreateUserRequest request =
CreateUserRequest.newBuilder()
.setParent(parent)
// This field is the email address of the user.
.setUserId(email)
.setUser(
User.newBuilder()
.addAccessRights(AccessRight.ADMIN)
.addAccessRights(AccessRight.PERFORMANCE_REPORTING)
.build())
.build();
System.out.println("Sending Create User request");
User response = userServiceClient.createUser(request);
System.out.println("Inserted User Name below");
// The last part of the user name will be the email address of the user.
// Format: `accounts/{account}/user/{user}`
System.out.println(response.getName());
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The email address of this user.
String email = "testUser@gmail.com";
createUser(config, email);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\AccessRight;
use Google\Shopping\Merchant\Accounts\V1\CreateUserRequest;
use Google\Shopping\Merchant\Accounts\V1\User;
use Google\Shopping\Merchant\Accounts\V1\Client\UserServiceClient;
/**
* Creates a user.
*
* @param array $config The configuration data.
* @param string $email The email address of the user.
* @return void
*/
function createUser($config, $email): void
{
// Gets the OAuth credentials to make the request.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Creates options config containing credentials for the client to use.
$options = ['credentials' => $credentials];
// Creates a client.
$userServiceClient = new UserServiceClient($options);
// Creates parent to identify where to insert the user.
$parent = sprintf("accounts/%s", $config['accountId']);
// Calls the API and catches and prints any network failures/errors.
try {
$request = new CreateUserRequest([
'parent' => $parent,
'user_id' => $email,
'user' => (new User())
->setAccessRights([AccessRight::ADMIN,AccessRight::PERFORMANCE_REPORTING])
]);
print "Sending Create User request\n";
$response = $userServiceClient->createUser($request);
print "Inserted User Name below\n";
print $response->getName() . "\n";
} catch (ApiException $e) {
print $e->getMessage();
}
}
$config = Config::generateConfig();
$email = "testUser@gmail.com";
createUser($config, $email);
cURL
curl -X PATCH \
"https://merchantapi.googleapis.com/products/v1/accounts/{ACCOUNT_ID}/users/{USER_EMAIL}?update_mask=access_rights" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-d '{
"access_rights": [
"ADMIN",
"API_DEVELOPER"
]
}'