Регистрация в качестве разработчика — это обязательный, одноразовый процесс настройки, который связывает ваш проект Google Cloud с вашей учетной записью Merchant Center и регистрирует вашу контактную информацию разработчика в Google. Это позволяет Google отправлять важные объявления о сервисах и обязательные обновления соответствующим техническим специалистам.
предоставленные вами контакты.
Этот документ является частью многосерийного цикла статей о начале работы с Merchant API. Если вы уже зарегистрированы в Merchant API, можете перейти к следующему разделу: Вставьте свой первый товар
Предварительные требования
Прежде чем регистрироваться для использования API для продавцов, убедитесь, что вы соответствуете следующим требованиям:
- Для доступа к учетной записи Merchant Center вам потребуется уже существующая учетная запись Merchant Center.
- Административный доступ к учетной записи Merchant Center : адрес электронной почты или учетная запись службы, используемая для авторизации запроса на регистрацию, должна иметь тип доступа
ADMINв учетной записи Merchant Center, в которую вы регистрируетесь. Для получения дополнительной информации см. раздел «Авторизация запросов к Merchant API» . - Идентификатор проекта Google Cloud : Ваше приложение должно быть связано с выделенным проектом Google Cloud, чтобы предоставить учетные данные для аутентификации. Подробную информацию о том, где найти идентификатор проекта, см. в разделе «Как найти название, номер и идентификатор проекта» .
- Действительный адрес электронной почты, связанный с учетной записью Google , которую вы указываете в качестве контактного лица разработчика для получения обновлений от Google. Это не должен быть адрес электронной почты служебной учетной записи. Вы можете использовать адрес электронной почты, уже используемый в учетной записи Merchant Center, или новый адрес.
Зарегистрируйтесь как разработчик в Merchant API.
Для использования Merchant API необходимо зарегистрировать контактную информацию разработчика и проект Google Cloud в своей учетной записи Merchant Center с помощью метода registerGcp .
Независимо от того, работаете ли вы с несколькими торговыми счетами или нет, операция регистрации выполняется один раз для каждого проекта Google Cloud, который вы собираетесь использовать . Если вы работаете с несколькими проектами Google Cloud , вы можете зарегистрировать любой или все из них в одном и том же торговом счете Merchant Center.
Преимущества регистрации
Регистрация предоставляет следующие преимущества:
- Создание контактного лица по техническим вопросам : В Центре для продавцов создается контактное лицо по техническим вопросам. Google отправляет этому контактному лицу важные обновления, касающиеся API, такие как объявления об услугах и информация о новых функциях.
- Управление несколькими торговыми счетами : позволяет вам выступать в качестве контактного лица разработчика для всех управляемых вами торговых счетов.
За исключением регистрации, любые вызовы к Merchant API из незарегистрированного проекта Google Cloud блокируются, возвращая код ошибки 401 со статусом UNAUTHENTICATED и следующим сообщением об ошибке:
GCP project with id {GCP_ID} and number {GCP_NUMBER} is not registered with the merchant account.
Please 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.
Важные соображения
- Одноразовая настройка для каждого проекта Google Cloud : Регистрация выполняется один раз для каждого проекта Google Cloud и применяется ко всем пользователям и учетным записям служб в рамках проекта Google Cloud. Убедитесь, что API для продавцов включен в вашем проекте Google Cloud.
- Каждый проект Google Cloud может быть зарегистрирован только в одной учетной записи Merchant Center одновременно : если вы попытаетесь зарегистрировать один проект Google Cloud в нескольких учетных записях Merchant Center одновременно, вы получите ошибку
ALREADY_REGISTERED. Используйте один и тот же адрес электронной почты разработчика для регистрации. Обратите внимание, что к одной и той же учетной записи Merchant Center можно зарегистрировать несколько проектов Google Cloud. - Укажите правильную учетную запись для третьих лиц (3P), управляющих несколькими продавцами: Третьи лица, представляющие или управляющие несколькими продавцами, должны использовать соответствующую структуру учетных записей в экосистеме Google. Правильный идентификатор зависит от типа вашего бизнеса:
- Торговые площадки с уже существующим расширенным аккаунтом: Если ваша компания работает как торговая площадка и уже имеет расширенный аккаунт, представляющий всю платформу, вам следует использовать этот существующий идентификатор аккаунта.
- Сервисы сравнения цен (CSS): Если вы являетесь сервисом сравнения цен, используйте свой уникальный идентификатор учетной записи CSS или идентификатор групповой учетной записи CSS.
- Агентства, разработчики и другие сторонние поставщики услуг: Если вы являетесь сторонним поставщиком услуг, например, агентством или сторонним разработчиком, управляете несколькими торговыми счетами и у вас нет единого идентификатора Merchant Center, представляющего вашу компанию, вам следует создать новый основной аккаунт Merchant Center и запросить его преобразование в расширенный аккаунт . Расширенные аккаунты могут управлять субсчетами и обеспечивать необходимую структуру для работы со сторонними поставщиками услуг.
- Регистрацию следует проводить только для основного аккаунта Merchant Center : вы регистрируете разработчика, используя только свой основной аккаунт Merchant Center, и становитесь контактным лицом для всех связанных с ним субаккаунтов Merchant Center. Не регистрируйте каждый из своих субаккаунтов Merchant Center по отдельности.

На приведенной выше диаграмме показана настройка регистрации при использовании нескольких проектов Google Cloud и одного основного Merchant Center с возможностью добавления нескольких субсчетов Merchant Center.
- После регистрации адреса электронной почты разработчика :
- Вы можете выполнять вызовы API для продавцов в течение 5 минут после регистрации.
- Если адрес электронной почты принадлежит существующему пользователю Merchant Center, ему присваивается роль
API_DEVELOPER. В противном случае в Merchant Center создается новый пользователь, и он должен принять приглашение в течение 14 дней, чтобы предотвратить истечение срока действия приглашения и необходимость повторной регистрации. Процесс регистрации завершается только после того, как пользователь перейдет по ссылке-приглашению.
Сделайте звонок для регистрации.
Регистрация осуществляется путем вызова метода registerGcp . У вас есть два варианта выполнения вызова регистрации:
- Вариант 1: Прямые вызовы API. Вы отправляете прямые запросы к конечным точкам API, как правило, по протоколу HTTP(S). Вы вручную обрабатываете такие аспекты, как формирование тела запроса, установка заголовков (включая аутентификацию) и анализ ответа.
- Вариант 2: Клиентские библиотеки. Вы используете готовые библиотеки, которые предлагают более удобный, идиоматический для языка способ взаимодействия с API продавца. Они обрабатывают аутентификацию и авторизацию, а также предлагают удобный способ абстрагирования от базового HTTP-коммуникационного процесса. Доступны официальные примеры кода, которые помогут вам быстро начать работу.
Разрешение на проведение регистрационного звонка
Как описано на шаге «Авторизация запросов к 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 void 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 catches and prints 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);
} catch (Exception e) {
System.out.println(e);
}
}
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}"
}'
Рекомендации после регистрации
Для обеспечения надежного управления доступом и предотвращения сбоев в работе сервиса в будущем мы рекомендуем вам следовать ряду рекомендаций после завершения первоначальной регистрации:
Предоставьте разработчику API дополнительные права доступа.
При регистрации контактного лица-разработчика ему автоматически назначается роль API_DEVELOPER . Эта роль не включает в себя другие разрешения, необходимые для управления учетной записью Merchant Center или выполнения всех вызовов API. Мы рекомендуем добавить вашим разработчикам роли ADMIN или STANDARD для обеспечения полного доступа.
Для изменения прав доступа пользователя используйте метод 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"
]
}'
Добавить контакты разработчиков
Чтобы избежать сбоев в работе бизнеса в случае ухода или потери доступа основного контактного лица разработчика, крайне важно иметь резервные контакты. Мы рекомендуем иметь как минимум одного дополнительного пользователя с ролью API_DEVELOPER в Merchant Center в качестве резервного.
Добавить пользователя или обновить существующего можно с помощью сервиса accounts.users в Merchant API или на странице «Доступ и сервисы» в пользовательском интерфейсе Merchant Center. Заблаговременное добавление резервных разработчиков позволяет создать более надежную интеграцию, не зависящую от одного человека.
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"
]
}'