Google 비즈니스 프로필 연결

Google 비즈니스 위치 그룹은 위치 공유 폴더와 유사합니다. 비즈니스 위치 그룹을 사용하면 여러 사용자와 공동으로 안전하게 위치를 관리할 수 있습니다. 자세한 내용은 비즈니스 위치 그룹 정보를 참고하세요.

오프라인 인벤토리를 업로드하기 전에 판매자 센터 계정에서 담당할 비즈니스 위치 그룹을 지정합니다. 판매자 API를 사용하여 비즈니스 프로필에서 자격 요건을 충족하는 비즈니스 그룹 목록을 가져올 수 있지만, 액세스 권한을 얻으려면 먼저 계정을 비즈니스 프로필에 연결해야 합니다.

비즈니스 프로필 액세스 권한 요청하기

비즈니스 프로필에 액세스하려면 gbpAccounts.LinkGbpAccount 메서드를 사용하세요.

POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/gbpAccounts:linkGbpAccount

{
  "gbpEmail": "admin@example.com",
}

다음을 바꿉니다.

  • ACCOUNT_ID: 판매자 센터 계정의 고유 식별자
  • GBP_EMAIL: 비즈니스 프로필 관리자의 이메일

이 메서드를 호출하면 서비스는 지정된 관리자에게 액세스 요청을 수락하거나 거부하도록 요청하는 이메일을 보냅니다. 관리자가 7일 이내에 응답하지 않으면 요청이 자동으로 만료됩니다.

사용 가능한 비즈니스 그룹 나열

관리자가 요청을 승인하면 gbpAccounts.List 메서드를 사용하여 사용 가능한 비즈니스 그룹을 확인할 수 있습니다.

다음은 샘플 요청과 성공적인 응답입니다.

GET https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/gbpAccounts

Response:
200 OK
{
  "gbpAccounts": [
    {
      "name": "accounts/{ACCOUNT_ID}/gbpAccounts/12345",
      "gbpAccountId": 12345,
      "type": USER,
      "gbpAccountName": "admin@example.com",
      "listingCount": 15
    }, {
      "name": "accounts/{ACCOUNT_ID}/gbpAccounts/67890",
      "gbpAccountId": 67890,
      "type": BUSINESS_ACCOUNT,
      "gbpAccountName": "Google My Business Account",
      "listingCount": 23
    }
  ],
  "nextPageToken": 50
}

이 코드 샘플을 활용하여 자격 요건을 충족하는 모든 비즈니스 그룹을 가져올 수 있습니다.

자바

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AccountName;
import com.google.shopping.merchant.accounts.v1.GbpAccount;
import com.google.shopping.merchant.accounts.v1.GbpAccountsServiceClient;
import com.google.shopping.merchant.accounts.v1.GbpAccountsServiceClient.ListGbpAccountsPagedResponse;
import com.google.shopping.merchant.accounts.v1.GbpAccountsServiceSettings;
import com.google.shopping.merchant.accounts.v1.ListGbpAccountsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/**
 * This class demonstrates how to get the list of GBP accounts for a given Merchant Center account
 */
public class ListGbpAccountsSample {

  public static void listGbpAccounts(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.
    GbpAccountsServiceSettings gbpAccountsServiceSettings =
        GbpAccountsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String accountId = config.getAccountId().toString();
    // Creates parent to identify the omnichannelSetting from which to list all Lfp Providers.
    String parent = AccountName.newBuilder().setAccount(accountId).build().toString();

    // Calls the API and catches and prints any network failures/errors.
    try (GbpAccountsServiceClient gbpAccountsServiceClient =
        GbpAccountsServiceClient.create(gbpAccountsServiceSettings)) {
      ListGbpAccountsRequest request =
          ListGbpAccountsRequest.newBuilder().setParent(parent).build();

      System.out.println("Sending list GBP accounts request:");
      ListGbpAccountsPagedResponse response = gbpAccountsServiceClient.listGbpAccounts(request);

      int count = 0;

      // Iterates over all the entries in the response.
      for (GbpAccount gbpAccount : response.iterateAll()) {
        System.out.println(gbpAccount);
        count++;
      }
      System.out.println(String.format("The following count of elements were returned: %d", count));
    } catch (Exception e) {
      System.out.println("An error has occured: ");
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();

    listGbpAccounts(config);
  }
}

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\GbpAccountsServiceClient;
use Google\Shopping\Merchant\Accounts\V1\GbpAccount;
use Google\Shopping\Merchant\Accounts\V1\ListGbpAccountsRequest;

/**
 * This class demonstrates how to get the list of GBP accounts for a given
 * Merchant Center account.
 */
class ListGbpAccountsSample
{
    /**
     * A helper function to create the parent string.
     *
     * @param string $accountId The account ID.
     *
     * @return string The parent has the format: `accounts/{account_id}`
     */
    private static function getParent(string $accountId): string
    {
        return sprintf('accounts/%s', $accountId);
    }

    /**
     * Retrieves the list of GBP accounts for a given Merchant Center account.
     *
     * @param array $config The configuration data for authentication and account ID.
     *
     * @return void
     */
    public static function listGbpAccounts(array $config): 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.
        $gbpAccountsServiceClient = new GbpAccountsServiceClient($options);

        // Creates the parent account name to identify the merchant.
        $parent = self::getParent($config['accountId']);

        // Creates the request to list GBP accounts.
        $request = new ListGbpAccountsRequest([
            'parent' => $parent
        ]);

        // Calls the API and catches and prints any network failures/errors.
        try {
            printf("Sending list GBP accounts request:%s", PHP_EOL);
            $response = $gbpAccountsServiceClient->listGbpAccounts($request);

            $count = 0;

            // Iterates over all the GBP accounts in the response and prints them.
            foreach ($response->iterateAllElements() as $gbpAccount) {
                /** @var GbpAccount $gbpAccount */
                print_r($gbpAccount->serializeToJsonString());
                $count++;
            }
            printf(
                "The following count of elements were returned: %d%s",
                $count,
                PHP_EOL
            );
        } catch (ApiException $e) {
            printf("An error has occurred: %s%s", $e->getMessage(), PHP_EOL);
        }
    }

    /**
     * Helper to execute the sample.
     *
     * @return void
     */
    public function callSample(): void
    {
        $config = Config::generateConfig();
        self::listGbpAccounts($config);
    }
}

// Runs the script.
$sample = new ListGbpAccountsSample();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import GbpAccountsServiceClient
from google.shopping.merchant_accounts_v1 import ListGbpAccountsRequest

# Gets the merchant account ID from the configuration file.
_ACCOUNT = configuration.Configuration().read_merchant_info()
# Creates the parent resource name string.
_PARENT = f"accounts/{_ACCOUNT}"


def list_gbp_accounts() -> None:
  """Lists the Google Business Profile accounts for a given Merchant Center account."""

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = GbpAccountsServiceClient(credentials=credentials)

  # Creates the request.
  request = ListGbpAccountsRequest(parent=_PARENT)

  # Makes the request and catches and prints any error messages.
  try:
    print("Sending list GBP accounts request:")
    # Makes the request and retrieves the list of GBP accounts.
    response = client.list_gbp_accounts(request=request)

    count = 0
    # Iterates over all the GBP accounts in the response and prints them.
    for gbp_account in response:
      print(gbp_account)
      count += 1
    print(f"The following count of elements were returned: {count}")
  except RuntimeError as e:
    print("An error has occured: ")
    print(e)


if __name__ == "__main__":
  list_gbp_accounts()

판매자 센터 계정의 비즈니스 위치 그룹 지정

사용 가능한 비즈니스 위치 그룹 목록이 표시되면 비즈니스 위치 그룹을 판매자 센터 계정과 연결할 수 있습니다. 예를 들어 이전 단계에서 반환된 Google 비즈니스 프로필 계정 ID 12345가 있는 비즈니스 위치 그룹을 선택하려면 AccountServices.proposeAccountService를 사용할 수 있습니다.

POST
https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/services:propose
{
  provider: "providers/GOOGLE_BUSINESS_PROFILE",
  account_service: {
    external_account_id: "12345",
    local_listing_management {}
  }
}

provider 필드는 providers/GOOGLE_BUSINESS_PROFILE여야 합니다. 요청에서 빈 LocalListingManagement 필드를 설정해야 합니다.

제품 및 인벤토리 데이터 제출

이제 판매자 센터 계정을 비즈니스 위치 그룹과 연결했으므로 제품 및 오프라인 판매점 인벤토리 데이터를 업로드할 수 있습니다. 자세한 내용은 다음을 참조하세요.