به عنوان یک توسعه دهنده ثبت نام کنید، به عنوان یک توسعه دهنده ثبت نام کنید

ثبت نام به عنوان توسعه دهنده یک فرآیند اجباری و یک بار مصرف است که پروژه Google Cloud شما را به حساب مرکز فروشندگان شما متصل می‌کند و اطلاعات تماس توسعه دهنده شما را در گوگل ثبت می‌کند. این به گوگل اجازه می‌دهد تا اطلاعیه‌های خدمات حیاتی و به‌روزرسانی‌های اجباری را به بخش فنی مربوطه ارسال کند.
مخاطبینی که شما ارائه می‌دهید.

این سند بخشی از یک مجموعه چند قسمتی در مورد شروع به کار با Merchant API است. اگر قبلاً در Merchant API ثبت نام کرده‌اید، می‌توانید به بخش بعدی بروید: اولین محصول خود را وارد کنید

پیش‌نیازها

قبل از ثبت نام برای استفاده از Merchant API، مطمئن شوید که شرایط زیر را دارید:

  • حساب مرکز تجاری : شما به یک حساب مرکز تجاری موجود نیاز دارید.
  • دسترسی ادمین در حساب مرکز فروشندگان : ایمیل یا حساب سرویسی که برای تأیید تماس ثبت‌نام استفاده می‌کنید، باید در حساب مرکز فروشندگانی که در آن ثبت‌نام می‌کنید، دسترسی ADMIN داشته باشد. برای اطلاعات بیشتر، به بخش تأیید درخواست‌ها به API فروشگاه مراجعه کنید.
  • شناسه پروژه گوگل کلود : برنامه شما باید با یک پروژه اختصاصی گوگل کلود مرتبط باشد تا اعتبارنامه‌های لازم برای احراز هویت را ارائه دهد. برای جزئیات بیشتر در مورد نحوه یافتن شناسه پروژه، به «یافتن نام، شماره و شناسه پروژه» مراجعه کنید.
  • یک آدرس ایمیل معتبر مرتبط با یک حساب گوگل که شما به عنوان نقطه تماس توسعه‌دهنده برای به‌روزرسانی‌های گوگل ارائه می‌دهید. نباید ایمیل یک حساب خدماتی باشد. می‌توانید از یک آدرس ایمیل که از قبل بخشی از حساب مرکز بازرگانان است یا یک آدرس جدید استفاده کنید.

به عنوان یک توسعه‌دهنده با Merchant API ثبت نام کنید

برای استفاده از رابط برنامه‌نویسی کاربردی فروشگاه، باید اطلاعات تماس توسعه‌دهنده و پروژه Google Cloud خود را از طریق روش registerGcp در حساب مرکز فروشگاه خود ثبت کنید.

چه با چندین حساب تجاری کار کنید و چه نکنید، عملیات ثبت نام را برای هر پروژه Google Cloud که قصد استفاده از آن را دارید، یک بار انجام می‌دهید . اگر با چندین پروژه Google Cloud کار می‌کنید، می‌توانید هر یک یا همه آنها را در یک حساب مرکز تجاری ثبت کنید.

مزایای ثبت نام

ثبت نام مزایای زیر را ارائه می دهد:

  • ایجاد مخاطب فنی : این یک مخاطب فنی در مرکز فروشندگان ایجاد می‌کند. گوگل به‌روزرسانی‌های مهم مربوط به 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 اعمال می‌شود. مطمئن شوید که Merchant API در پروژه Google Cloud شما فعال است.
  • هر پروژه Google Cloud در هر زمان فقط می‌تواند با یک حساب مرکز بازرگانان ثبت شود : اگر سعی کنید یک پروژه Google Cloud را همزمان با چندین حساب مرکز بازرگانان ثبت کنید، خطای ALREADY_REGISTERED دریافت خواهید کرد. برای ثبت نام از همان آدرس ایمیل توسعه‌دهنده استفاده کنید. توجه داشته باشید که چندین پروژه Google Cloud را می‌توان در همان حساب مرکز بازرگانان ثبت کرد.
  • حساب صحیح را برای اشخاص ثالث (3P) تعیین کنید. مدیریت چندین پذیرنده: اشخاص ثالثی که نماینده یا مدیریت کننده چندین پذیرنده هستند، باید از ساختار حساب مناسب در اکوسیستم گوگل استفاده کنند. شناسه صحیح مورد استفاده به نوع کسب و کار شما بستگی دارد:
    • بازارها با یک حساب کاربری پیشرفته موجود: اگر کسب‌وکار شما به عنوان یک بازار فعالیت می‌کند و از قبل یک حساب کاربری پیشرفته دارد که کل پلتفرم را نمایندگی می‌کند، باید از این شناسه حساب کاربری موجود استفاده کنید.
    • سرویس‌های خرید مقایسه‌ای (CSS): اگر شما یک CSS هستید، باید از شناسه حساب CSS منحصر به فرد یا شناسه حساب گروه CSS خود استفاده کنید.
    • آژانس‌ها، توسعه‌دهندگان و سایر شرکت‌های 3P: اگر شما یک کسب‌وکار 3P مانند آژانس یا توسعه‌دهنده شخص ثالث هستید که چندین حساب تجاری را مدیریت می‌کنید و فاقد یک شناسه مرکز تجاری واحد هستید که نشان‌دهنده کسب‌وکار شما باشد، باید یک حساب تجاری اصلی جدید ایجاد کنید و درخواست تبدیل آن به یک حساب پیشرفته را بدهید. حساب‌های پیشرفته می‌توانند حساب‌های فرعی را مدیریت کرده و ساختار لازم را برای عملیات 3P فراهم کنند.
  • ثبت نام را فقط برای مرکز تجاری اصلی خود انجام دهید : شما ثبت نام توسعه دهنده را فقط با استفاده از حساب اصلی مرکز تجاری خود انجام می‌دهید و به رابط توسعه دهنده برای همه زیرحساب‌های مرکز تجاری مرتبط تبدیل می‌شوید. ثبت نام را برای هر یک از زیرحساب‌های مرکز تجاری خود انجام ندهید.

Alt text for accessibility

نمودار قبلی، تنظیمات ثبت نام را هنگام استفاده از چندین پروژه Google Cloud و یک مرکز تجاری اصلی با چندین حساب فرعی مرکز تجاری (اختیاری) نشان می‌دهد.

  • پس از ثبت آدرس ایمیل توسعه‌دهنده :
    • شما می‌توانید ظرف ۵ دقیقه پس از ثبت نام، فراخوانی‌های API فروشنده را انجام دهید.
    • اگر ایمیل متعلق به یک کاربر موجود در مرکز بازرگانان باشد، به او نقش API_DEVELOPER اعطا می‌شود. در غیر این صورت، یک کاربر جدید در مرکز بازرگانان ایجاد می‌شود و او باید ظرف ۱۴ روز دعوت‌نامه را بپذیرد تا از منقضی شدن آن و نیاز به شروع مجدد فرآیند ثبت‌نام جلوگیری شود. شما فرآیند ثبت‌نام را تنها پس از کلیک کاربر روی لینک دعوت‌نامه تکمیل می‌کنید.

تماس ثبت نام را برقرار کنید

شما با فراخوانی متد registerGcp ثبت نام می‌کنید. برای انجام فراخوانی ثبت نام دو گزینه دارید:

  • گزینه ۱: فراخوانی‌های مستقیم API شما درخواست‌های خام را مستقیماً به نقاط انتهایی API، معمولاً از طریق HTTP(S) ارسال می‌کنید. شما به صورت دستی جنبه‌هایی مانند تشکیل بدنه درخواست، تنظیم هدرها (از جمله احراز هویت) و تجزیه پاسخ را مدیریت می‌کنید.
  • گزینه ۲: کتابخانه‌های کلاینت شما از کتابخانه‌های از پیش ساخته شده استفاده می‌کنید که روشی راحت‌تر و مبتنی بر زبان برای تعامل با API فروشنده ارائه می‌دهند. آن‌ها احراز هویت و مجوز را مدیریت می‌کنند و روشی مناسب برای حذف ارتباطات HTTP زیربنایی ارائه می‌دهند. نمونه‌های کد رسمی برای شروع سریع شما در دسترس هستند.

مجوز فراخوان ثبت نام

همانطور که در مرحله تأیید درخواست‌ها به API فروشنده توضیح داده شد، شما دو سناریوی احراز هویت متمایز دارید:

  • OAuth 2.0 : برای ارائه دهندگان یا آژانس‌های شخص ثالث که چندین حساب تجاری را مدیریت می‌کنند
  • حساب‌های خدماتی : برای دسترسی به حساب مرکز تجاری خودتان

برای اطلاعات بیشتر در مورد مجوز فراخوانی ثبت، به بخش «چگونه احراز هویت و مجوز را برای فراخوانی ثبت انجام دهم؟» مراجعه کنید.

فراخوان ثبت نام

در مثال‌های زیر، فراخوانی ثبت‌نام را با استفاده از فراخوانی‌های مستقیم 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 : شناسه مرکز فروش شما
  • ACCESS_TOKEN : توکن مجوز برای فراخوانی API
  • DEVELOPER_EMAIL : آدرس ایمیل مسئول فنی اصلی

یک فراخوانی موفق، یک منبع DeveloperRegistration را برمی‌گرداند که وضعیت اتصال موفقیت‌آمیز را تأیید می‌کند:

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

پایتون

نمونه‌ها را دانلود کنید و برای راه‌اندازی کتابخانه‌های کلاینت پایتون، راهنمایی‌های مربوط به نمونه‌های پایتون API Merchant گوگل را دنبال کنید.

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)

جاوا

نمونه‌ها را دانلود کنید و برای راه‌اندازی کتابخانه‌های کلاینت جاوا، راهنمایی‌های Google Merchant API Java Samples را دنبال کنید.

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 API فروشگاه گوگل را دنبال کنید.

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 -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 به آنها اختصاص داده می‌شود. این نقش شامل سایر مجوزهای لازم برای مدیریت حساب مرکز پذیرندگان یا انجام همه فراخوانی‌های 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" ]
}

پایتون

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)

جاوا

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);
  }
}

پی اچ پی

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 -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 در مرکز فروشندگان داشته باشید تا به عنوان پشتیبان عمل کند.

شما می‌توانید با استفاده از سرویس accounts.users در Merchant API یا صفحه Access and services در رابط کاربری 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" ] }
}

پایتون

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)

جاوا

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);
  }
}

پی اچ پی

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 -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"
  ]
}'