網路商店網址是 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 '{}'