管理首頁設定

網路商店網址是 Merchant Center 的首頁。請先設定或更新首頁網址。接著,如要啟用各種 Merchant Center 功能,並在 Google 平台上放送廣告,請驗證你對與這個網址相關聯的網站具有控制權。網站通過驗證後,你可以在 Merchant Center 中聲明首頁擁有權。

你可以使用 Merchant API 管理首頁設定,包括下列作業:

  • 設定首頁網址
  • 聲明首頁網址的擁有權
  • 放棄首頁網址

必要條件

你必須先驗證商店網站,才能聲明擁有權。如要進一步瞭解網站驗證的重要性,請參閱「瞭解網路商店網址驗證」。如要瞭解相關程序,請參閱「網站驗證 API」。

特殊注意事項

如要使用 API 更新、聲明或放棄首頁網址,你必須具備 Merchant Center 帳戶的管理員存取權。

取得目前的首頁設定

如要擷取商店設定的首頁網址,並查看是否已成功聲明擁有權,請使用 accounts.homepage.getHomepage 方法。

以下是 HTTPS 要求範例:

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

成功的要求會傳回具有目前 URI 和聲明狀態的Homepage資源。

回覆範例如下:

{
  "name": "accounts/{ACCOUNT_ID}/homepage",
  "uri": "https://www.example.com",
  "claimed": true
}

如果未設定首頁,則不會傳回 claimed 的值。

{
  "name": "accounts/{ACCOUNT_ID}/homepage",
  "uri": "",
}

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.GetHomepageRequest;
import com.google.shopping.merchant.accounts.v1.Homepage;
import com.google.shopping.merchant.accounts.v1.HomepageName;
import com.google.shopping.merchant.accounts.v1.HomepageServiceClient;
import com.google.shopping.merchant.accounts.v1.HomepageServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to get the homepage for a given Merchant Center account */
public class GetHomepageSample {

  public static void getHomepage(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.
    HomepageServiceSettings homepageServiceSettings =
        HomepageServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates Homepage name to identify Homepage.
    String name =
        HomepageName.newBuilder().setAccount(config.getAccountId().toString()).build().toString();

    // Calls the API and catches and prints any network failures/errors.
    try (HomepageServiceClient homepageServiceClient =
        HomepageServiceClient.create(homepageServiceSettings)) {

      // The name has the format: accounts/{account}/homepage
      GetHomepageRequest request = GetHomepageRequest.newBuilder().setName(name).build();

      System.out.println("Sending Get Homepage request:");
      Homepage response = homepageServiceClient.getHomepage(request);

      System.out.println("Retrieved Homepage below");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

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

    getHomepage(config);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\GetHomepageRequest;
use Google\Shopping\Merchant\Accounts\V1\Client\HomepageServiceClient;


/**
 * This class demonstrates how to get the homepage for a given Merchant Center account
 */
class GetHomepage
{
    /**
     * Gets the homepage for a given Merchant Center account.
     *
     * @param array $config The configuration data for authentication and account ID.
     * @return void
     * @throws ApiException if the API call fails.
     */
    public static function getHomepageSample(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.
        $homepageServiceClient = new HomepageServiceClient($options);

        // Creates Homepage name to identify Homepage.
        // The name has the format: accounts/{account}/homepage
        $name = "accounts/" . $config['accountId'] . "/homepage";

        // Calls the API and catches and prints any network failures/errors.
        try {
            $request = new GetHomepageRequest(['name' => $name]);

            print "Sending Get Homepage request:\n";
            $response = $homepageServiceClient->getHomepage($request);

            print "Retrieved Homepage below\n";
            print_r($response);
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

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

        // Makes the call to get the homepage.
        self::getHomepageSample($config);
    }
}

// Run the script
$sample = new GetHomepage();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import GetHomepageRequest
from google.shopping.merchant_accounts_v1 import HomepageServiceClient

_ACCOUNT = configuration.Configuration().read_merchant_info()


def get_homepage():
  """Gets the homepage for a given Merchant Center account."""

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

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

  # Creates Homepage name to identify Homepage.
  name = "accounts/" + _ACCOUNT + "/homepage"

  # Creates the request.
  request = GetHomepageRequest(name=name)

  # Makes the request and catches and prints any error messages.
  try:
    response = client.get_homepage(request=request)
    print("Retrieved Homepage below")
    print(response)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  get_homepage()

cURL

curl --location --request GET \
'https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/homepage' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>'

更新首頁網址

如要設定或變更與 Merchant Center 帳戶相關聯的網站網址,請使用 updateHomepage 方法。

您需要在要求主體中提供 Homepage 資源,指定新的 uri,並在 update_mask 中加入 uri

以下是 HTTPS 要求範例:

PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/homepage?update_mask=uri

以下是要求酬載範例:

{
  "name": "accounts/{ACCOUNT_ID}/homepage",
  "uri": "https://www.new-example.com"
}

如果要求成功,系統會傳回更新後的Homepage資源。

回覆範例如下:

{
  "name": "accounts/{ACCOUNT_ID}/homepage",
  "uri": "https://www.new-example.com",
  "claimed": true
}

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.Homepage;
import com.google.shopping.merchant.accounts.v1.HomepageName;
import com.google.shopping.merchant.accounts.v1.HomepageServiceClient;
import com.google.shopping.merchant.accounts.v1.HomepageServiceSettings;
import com.google.shopping.merchant.accounts.v1.UpdateHomepageRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to update a homepage to a new URL. */
public class UpdateHomepageSample {

  public static void updateHomepage(Config config, String uri) throws Exception {

    GoogleCredentials credential = new Authenticator().authenticate();

    HomepageServiceSettings homepageServiceSettings =
        HomepageServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates homepage name to identify homepage.
    String name =
        HomepageName.newBuilder().setAccount(config.getAccountId().toString()).build().toString();

    // Create a homepage with the updated fields.
    Homepage homepage = Homepage.newBuilder().setName(name).setUri(uri).build();

    FieldMask fieldMask = FieldMask.newBuilder().addPaths("uri").build();

    try (HomepageServiceClient homepageServiceClient =
        HomepageServiceClient.create(homepageServiceSettings)) {

      UpdateHomepageRequest request =
          UpdateHomepageRequest.newBuilder().setHomepage(homepage).setUpdateMask(fieldMask).build();

      System.out.println("Sending Update Homepage request");
      Homepage response = homepageServiceClient.updateHomepage(request);
      System.out.println("Updated Homepage 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();

    // The URI (a URL) of the store's homepage.
    String uri = "https://example.com";

    updateHomepage(config, uri);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Accounts\V1\Homepage;
use Google\Shopping\Merchant\Accounts\V1\Client\HomepageServiceClient;
use Google\Shopping\Merchant\Accounts\V1\UpdateHomepageRequest;

/**
 * This class demonstrates how to update a homepage to a new URL.
 */
class UpdateHomepage
{
    /**
     * Updates a homepage to a new URL.
     *
     * @param array $config The configuration data for authentication and account ID.
     * @param string $uri The new URI for the homepage.
     * @return void
     * @throws ApiException if the API call fails.
     */
    public static function updateHomepageSample(array $config, string $uri): 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.
        $homepageServiceClient = new HomepageServiceClient($options);

        // Creates Homepage name to identify Homepage.
        // The name has the format: accounts/{account}/homepage
        $name = "accounts/" . $config['accountId'] . "/homepage";

        // Create a homepage with the updated fields.
        $homepage = new Homepage(['name' => $name, 'uri' => $uri]);

        // Create field mask to specify which fields to update.
        $fieldMask = new FieldMask(['paths' => ['uri']]);

        try {
            $request = new UpdateHomepageRequest([
                'homepage' => $homepage,
                'update_mask' => $fieldMask
            ]);

            print "Sending Update Homepage request\n";
            $response = $homepageServiceClient->updateHomepage($request);
            print "Updated Homepage Name below\n";
            print $response->getName() . "\n";
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

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

        // The URI (a URL) of the store's homepage.
        $uri = "https://example.com";

        // Makes the call to update the homepage.
        self::updateHomepageSample($config, $uri);
    }
}

// Run the script
$sample = new UpdateHomepage();
$sample->callSample();

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 Homepage
from google.shopping.merchant_accounts_v1 import HomepageServiceClient
from google.shopping.merchant_accounts_v1 import UpdateHomepageRequest

_ACCOUNT = configuration.Configuration().read_merchant_info()


def update_homepage(new_uri):
  """Updates a homepage to a new URL."""

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

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

  # Creates Homepage name to identify Homepage.
  name = "accounts/" + _ACCOUNT + "/homepage"

  # Create a homepage with the updated fields.
  homepage = Homepage(name=name, uri=new_uri)

  # Create a FieldMask for the "uri" field.
  field_mask = field_mask_pb2.FieldMask(paths=["uri"])

  # Creates the request.
  request = UpdateHomepageRequest(homepage=homepage, update_mask=field_mask)

  # Makes the request and catches and prints any error messages.
  try:
    response = client.update_homepage(request=request)
    print("Updated Homepage Name below")
    print(response.name)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  # The URI (a URL) of the store's homepage.
  uri = "https://example.com"
  update_homepage(uri)

cURL

curl --location --request PATCH \
'https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/homepage?update_mask=uri' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
  "name": "accounts/{ACCOUNT_ID}/homepage",
  "uri": "https://www.new-example.com"
}'

聲明首頁擁有權

如要聲明網路商店首頁的擁有權,請使用 claim 方法。但你必須先完成驗證,才能聲明擁有首頁。驗證程序可證明你擁有該網站。

以下是 HTTPS 要求範例:

POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/homepage:claim

以下是要求酬載範例,說明如何從其他帳戶覆寫現有著作權聲明:

{
  "overwrite": true
}

成功的要求會傳回 Homepage 資源。如果聲明成功,claimed 欄位會顯示 true

回覆範例如下:

{
  "name": "accounts/{ACCOUNT_ID}/homepage",
  "uri": "https://www.new-example.com",
  "claimed": true
}

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.ClaimHomepageRequest;
import com.google.shopping.merchant.accounts.v1.Homepage;
import com.google.shopping.merchant.accounts.v1.HomepageName;
import com.google.shopping.merchant.accounts.v1.HomepageServiceClient;
import com.google.shopping.merchant.accounts.v1.HomepageServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to claim the homepage for a given Merchant Center account. */
public class ClaimHomepageSample {

  // Executing this method requires admin access.
  public static void claimHomepage(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.
    HomepageServiceSettings homepageServiceSettings =
        HomepageServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates Homepage name to identify Homepage.
    // The name has the format: accounts/{account}/homepage
    String name =
        HomepageName.newBuilder().setAccount(config.getAccountId().toString()).build().toString();

    // Calls the API and catches and prints any network failures/errors.
    try (HomepageServiceClient homepageServiceClient =
        HomepageServiceClient.create(homepageServiceSettings)) {

      ClaimHomepageRequest request = ClaimHomepageRequest.newBuilder().setName(name).build();

      System.out.println("Sending Claim Homepage request:");

      // If the homepage is already claimed, this will recheck the
      // verification (unless the merchant is exempt from claiming, which also
      // exempts from verification) and return a successful response. If ownership
      // can no longer be verified, it will return an error, but it won't lose an existing
      // claim. In case of failure, a canonical error message will be returned:
      //    * PERMISSION_DENIED: user doesn't have the necessary permissions on this
      //    MC account;
      //    * FAILED_PRECONDITION:
      //      - The account is not a Merchant Center account;
      //      - MC account doesn't have a homepage;
      //      - claiming failed (in this case the error message will contain more
      //      details).
      Homepage response = homepageServiceClient.claimHomepage(request);

      System.out.println("Retrieved Homepage below");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

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

    claimHomepage(config);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\ClaimHomepageRequest;
use Google\Shopping\Merchant\Accounts\V1\Client\HomepageServiceClient;

/**
 * This class demonstrates how to claim the homepage for a given Merchant Center account.
 */
class ClaimHomepage
{
    /**
     * Claims the homepage for a given Merchant Center account.
     *
     * @param array $config The configuration data for authentication and account ID.
     * @return void
     * @throws ApiException if the API call fails.
     */
    public static function claimHomepageSample(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.
        $homepageServiceClient = new HomepageServiceClient($options);

        // Creates Homepage name to identify Homepage.
        // The name has the format: accounts/{account}/homepage
        $name = "accounts/" . $config['accountId'] . "/homepage";

        // Calls the API and catches and prints any network failures/errors.
        try {
            $request = new ClaimHomepageRequest(['name' => $name]);

            print "Sending Claim Homepage request:\n";

            $response = $homepageServiceClient->claimHomepage($request);

            print "Retrieved Homepage below\n";
            print_r($response);
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

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

        // Makes the call to claim the homepage.
        self::claimHomepageSample($config);
    }
}

// Run the script
$sample = new ClaimHomepage();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import ClaimHomepageRequest
from google.shopping.merchant_accounts_v1 import HomepageServiceClient

_ACCOUNT = configuration.Configuration().read_merchant_info()


def claim_homepage():
  """Claims the homepage for a given Merchant Center account."""

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

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

  # Creates Homepage name to identify Homepage.
  name = "accounts/" + _ACCOUNT + "/homepage"

  # Creates the request.
  request = ClaimHomepageRequest(name=name)

  # Makes the request and catches and prints any error messages.
  try:
    response = client.claim_homepage(request=request)
    print("Retrieved Homepage below")
    print(response)
  except RuntimeError as e:
    print(e)


if __name__ == "__main__":
  claim_homepage()

cURL

curl --location --request POST \
'https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/homepage:claim' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
  "overwrite": true
}'

放棄首頁

如要從商店首頁移除已聲明擁有權的狀態,請使用 unclaim 方法。如果網站已變更,或您不再希望目前網址與帳戶建立已聲明狀態的關聯,即可採取這項做法。

以下是 HTTPS 要求範例:

POST https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/homepage:unclaim

以下是要求酬載範例:

{}

回覆範例如下:

{
  "name": "accounts/{ACCOUNT_ID}/homepage",
  "uri": "https://www.new-example.com",
}

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.Homepage;
import com.google.shopping.merchant.accounts.v1.HomepageName;
import com.google.shopping.merchant.accounts.v1.HomepageServiceClient;
import com.google.shopping.merchant.accounts.v1.HomepageServiceSettings;
import com.google.shopping.merchant.accounts.v1.UnclaimHomepageRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to unclaim the homepage for a given Merchant Center account. */
public class UnclaimHomepageSample {

  // Executing this method requires admin access.
  public static void unclaimHomepage(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.
    HomepageServiceSettings homepageServiceSettings =
        HomepageServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    // Creates Homepage name to identify Homepage.
    // The name has the format: accounts/{account}/homepage
    String name =
        HomepageName.newBuilder().setAccount(config.getAccountId().toString()).build().toString();

    // Calls the API and catches and prints any network failures/errors.
    try (HomepageServiceClient homepageServiceClient =
        HomepageServiceClient.create(homepageServiceSettings)) {

      UnclaimHomepageRequest request = UnclaimHomepageRequest.newBuilder().setName(name).build();

      System.out.println("Sending Unclaim Homepage request:");

      Homepage response = homepageServiceClient.unclaimHomepage(request);

      System.out.println("Retrieved Homepage below");
      System.out.println(response);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

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

    unclaimHomepage(config);
  }
}

PHP

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\HomepageServiceClient;
use Google\Shopping\Merchant\Accounts\V1\UnclaimHomepageRequest;

/**
 * This class demonstrates how to unclaim the homepage for a given Merchant Center account.
 */
class UnclaimHomepage
{
    /**
     * Unclaims the homepage for a given Merchant Center account.
     *
     * @param array $config The configuration data for authentication and account ID.
     * @return void
     * @throws ApiException if the API call fails.
     */
    public static function unclaimHomepageSample(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.
        $homepageServiceClient = new HomepageServiceClient($options);

        // Creates Homepage name to identify Homepage.
        // The name has the format: accounts/{account}/homepage
        $name = "accounts/" . $config['accountId'] . "/homepage";

        // Calls the API and catches and prints any network failures/errors.
        try {
            $request = new UnclaimHomepageRequest(['name' => $name]);

            print "Sending Unclaim Homepage request:\n";

            $response = $homepageServiceClient->unclaimHomepage($request);

            print "Retrieved Homepage below\n";
            print_r($response);
        } catch (ApiException $e) {
            print $e->getMessage();
        }
    }

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

        // Makes the call to unclaim the homepage.
        self::unclaimHomepageSample($config);
    }
}


// Run the script
$sample = new UnclaimHomepage();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import HomepageServiceClient
from google.shopping.merchant_accounts_v1 import UnclaimHomepageRequest

_ACCOUNT = configuration.Configuration().read_merchant_info()


def unclaim_homepage():
  """Unclaims the homepage for a given Merchant Center account."""

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

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

  # Creates Homepage name to identify Homepage.
  # The name has the format: accounts/{account}/homepage
  name = "accounts/" + _ACCOUNT + "/homepage"

  # Creates the request.
  request = UnclaimHomepageRequest(name=name)

  # Makes the request and catches and prints any error messages.
  try:
    response = client.unclaim_homepage(request=request)
    print(f"Unclaimed Homepage: {response}")
  except RuntimeError as e:
    print(f"Failed to unclaim homepage: {e}")


if __name__ == "__main__":
  unclaim_homepage()

cURL

curl --location --request POST \
'https://merchantapi.googleapis.com/accounts/v1/accounts/{ACCOUNT_ID}/homepage:unclaim' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{}'