常见问题解答

本部分解答了有关 Merchant API 开发者注册的常见问题。

常规注册

有关注册流程的常见问题:

是否必须注册为开发者才能使用 Merchant API?

可以。您必须注册开发者联系信息,以便 Google 可以发送重要的 API 专属更新,例如服务通告和新功能信息。

如果您只想探索和测试 Merchant API,可以使用 Google OAuth Playground 和 API Explorer 等工具,这些工具无需注册。

我需要多久注册一次?

每个 Google Cloud 项目只需注册一次。无论您是否使用多个商家账号,都只需执行一次注册操作,该操作适用于关联的 Google Cloud 项目中的所有用户和服务账号。

Google Cloud 云项目成功注册后,该关联会保持有效,除非通过调用 unregisterGcp 方法将其明确移除。您无法注册共享的 Google 拥有的项目,例如 APIs Explorer 或 OAuth Playground。

我应提供哪个邮箱作为开发者联系信息?

我们建议您使用个人的公司邮箱。或者,您也可以使用通用群组别名。您不能使用服务账号电子邮件地址,因为通信对象是人类收件人。Google 会发送重要的 API 专属更新,例如服务通告和新功能信息。

如果该邮箱属于 Merchant Center 账号中的现有用户,则该用户会自动获得 API developer 角色。如果未注册,系统会向该地址发送邀请。

在 registerGcp 方法中,开发者联系邮箱字段是可选的。如果您在注册时未为此字段提供值,则必须在 Merchant Center 界面中或通过调用 accounts.users.create 方法创建具有 API developer 角色的用户。

开发者联系邮箱是否必须是 Google 账号?

可以。如需使用现有的非 Google 邮箱,您可以在创建 Google 账号注册流程中选择使用现有邮箱选项,将其与 Google 账号相关联。您无法使用服务账号电子邮件地址,因为服务账号无法接收电子邮件。

如何对注册调用执行身份验证和授权?

根据您的使用场景,注册调用的身份验证和授权有两种不同的身份验证场景:

  • OAuth 2.0:适用于管理多个商家账号的第三方提供商或代理机构
  • 服务账号:用于访问您自己的 Merchant Center 账号

用于无障碍功能的替代文本

上图显示了注册调用的两个身份验证和授权流程。您可以从以下选项中进行选择:

  • 将 OAuth 与和 Google 账号关联的电子邮件地址(例如 account@email.com)搭配使用
  • 使用服务账号,例如 sa@project.iam.gserviceaccount.com

如果您决定使用 OAuth:

  • 在 Google Cloud 云项目中为您的电子邮件创建 OAuth 凭证
  • 请确保授权电子邮件地址存在于您的 Merchant Center 中,并且具有 ADMIN 访问权限类型

如果您决定使用服务账号:

  • 确保您的 Google Cloud 项目中存在该服务账号
  • 确保与服务账号关联的邮箱存在于您的 Merchant Center 中,并且具有 ADMIN 访问权限类型

使用直接 API 调用或客户端库,在身份验证身份的安全上下文中执行注册调用。提供开发者联系人的电子邮件地址,例如 developer@email.com。

如果注册调用成功,则您的 Merchant Center 中会存在一个用户,该用户具有提供的开发者电子邮件地址和 API developer 角色。您会收到 DeveloperRegistration 资源作为响应。

身份验证电子邮件地址与开发者联系电子邮件地址有何区别?

这两个邮箱在 Merchant API 生态系统中具有不同的用途:

  • 身份验证电子邮件:您通常可以使用与您的 Google 账号或服务账号关联的电子邮件作为身份,来授权对 Merchant API 的请求,前提是:
    • 该用户存在于您的 Merchant Center 中,并且具有 ADMIN 角色。
    • 启用了 Merchant API 的 Google Cloud 云项目会托管 OAuth 客户端或服务账号,该客户端或账号与授权 API 调用的邮箱相关联。
  • 开发者联系邮箱:开发者联系邮箱也必须与 Google 账号相关联,但它会作为主要联系人,用于接收 Google 发送的重要服务通告和 API 更新。它可以属于某个用户或用户群组。默认情况下,它会在 Merchant Center 中获得 API developer 角色。

我必须接受通过开发者联系邮箱收到的邀请吗?

可以。您提供的开发者联系电子邮件收件人有 14 天的时间接受邀请。只有在他们接受邀请后,注册才算完成。不过,您可以在此期间执行 API 调用。

如果邀请未在指定时间内被接受,则邀请链接会失效。您无法再执行 Merchant API 调用,并且必须重新开始注册流程。

为什么我的开发者注册失败,并显示“测试账号”错误?

开发者注册仅限于生产(实时)账号,以确保集成稳定性。如果您使用的是专门为测试而创建的账号,且该账号在 Merchant Center 中被标记为“测试账号”,则注册将被拒绝。

我可以为客户注册我管理的子账号吗?

我们强烈建议您注册代表您企业身份的账号。注册客户的子账号是不允许的,而且容易出错;如果该客户离开您的服务或删除账号,您的整个 API 集成可能会被停用。

我的网站需要声明所有权还是只需验证?

对于开发者注册,网站必须经过验证。 这可以证明您对与该账号关联的网站拥有管理控制权。虽然购物广告等其他功能需要声明所有权,但验证是 API 注册的主要要求。

账号和项目管理

关于账号和项目管理的常见问题:

我管理多个 Merchant Center 账号。我是否需要注册要与 Merchant API 搭配使用的每个 Merchant Center 账号?

不需要。如果您是第三方开发者或管理多个商家账号的代理机构,则应使用自己的主要 Merchant Center 账号(而不是每个商家的账号)注册 Google Cloud 项目。这样,您就可以代表开发者为商家执行所有 API 工作。

我管理多个 Merchant Center 账号。如何选择我的主要 Merchant Center 账号?

选择要使用的主账号取决于您的商家类型:

  • 已有高级账号的购物平台:如果您的业务以购物平台的形式运营,并且已经有一个代表整个平台的高级账号,请将此现有账号 ID 用作主要 Merchant Center 账号。
  • 购物比较服务 (CSS):如果您是 CSS,请使用您唯一的 CSS 账号 ID 或 CSS 组账号 ID。
  • 代理机构、开发者和其他第三方:如果您是管理多个商家账号的第三方企业(例如代理机构或第三方开发者),并且没有代表您企业的单一 Merchant Center ID,则应创建一个新的主 Merchant Center 账号,并请求将其转换为高级账号。

将 Google Cloud 项目注册到主 Merchant Center 账号后,您可以使用该项目管理您有权访问的任何其他 Merchant Center 账号,而无需单独注册这些账号。

我使用多个 Google Cloud 项目。我是否需要逐一注册?

可以。由于注册过程会关联发出调用的 Google Cloud 项目,因此您必须从用于发出 API 调用的每个 Google Cloud 项目执行 registerGcp 调用。

一个 Google Cloud 项目一次只能注册到一个 Merchant Center 账号。不过,一个 Merchant Center 账号可以注册多个 Google Cloud 项目。同样,您可以使用同一开发者电子邮件地址在多个 Google Cloud 项目或多个 Merchant Center 中执行多次注册。

如果我将一个 Google Cloud 项目注册到多个 Merchant Center 账号,会出现什么情况?

尝试注册已在其他 Merchant Center 账号中注册的 Google Cloud 项目会导致 ALREADY_REGISTERED 错误。

如何对开发者注册 API 调用进行身份验证?

如需对 Merchant API 的开发者注册 API 调用进行身份验证,您需要使用通过 Google Cloud 项目管理的凭据。对于执行身份验证的身份,您有两个主要选项:

  • 使用 OAuth 2.0 的 Google 账号(例如 Gmail):此方法使用在 Google Cloud 项目中生成的 OAuth 2.0 客户端凭证。API 调用是代表用户登录的特定 Google 账号进行授权的。
  • 服务账号:此方法使用 Google Cloud 服务账号,这是一种专为应用设计的特殊 Google 账号。服务账号的凭据也在 Google Cloud 项目中进行管理。

如需成功注册开发者,身份验证(Google 账号或服务账号)必须在 Merchant Center 中满足以下条件:

  • 在 Merchant Center 中作为用户存在:与进行身份验证的 Google 账号或服务账号关联的邮箱必须作为用户添加到您要注册的 Merchant Center 账号中。
  • 需要管理员角色:此用户必须在该特定 Merchant Center 账号中分配有 ADMIN 角色。

进行 API 调用时:

  • 如果您使用的是直接 API 调用,则必须在 Authorization 标头中获取并提供有效的访问令牌。此令牌由 Google 账号的 OAuth 2.0 流程或服务账号的服务器到服务器身份验证流程生成。
  • Google 提供的客户端库通常会在配置过程中为您处理获取和刷新访问令牌的复杂过程。

进行身份验证的用户可能与开发者联系人用户不同。如需了解详情,请参阅身份验证电子邮件地址与一个开发者联系电子邮件地址之间有何区别?

我需要多久刷新一次访问令牌?

服务账号和 OAuth 2.0 的访问令牌通常会在 1 小时后过期。不过,获取新令牌的机制取决于您使用的身份验证方法:

  • 服务账号使用私钥或环境凭证,在需要时创建新的访问令牌。
  • OAuth 2.0 流程使用 refresh_token 调用 Google OAuth2 令牌端点,以接收新的 1 小时访问令牌。

我们强烈建议您使用官方 Google Auth 库,这些库会自动处理此轮替,因此您的应用永远不会停机。

用户和角色

有关用户和角色的常见问题:

开发者邮箱账号是否必须已存在于 Merchant Center 中?

不会。如果 Merchant Center 中尚不存在注册电子邮件账号,Merchant API 会在 Merchant Center 中创建具有指定电子邮件地址的账号,并将其状态设为“待处理”。如果开发者邮箱属于 Merchant Center 账号中的现有用户,则该用户会自动获得 API developer 角色。

开发者联系电子邮件地址是否需要在 Merchant Center 中拥有管理员权限?

不会。与开发者联系电子邮件地址关联的 Merchant Center 用户默认会获得接收重要通知所需的 API developer 角色。不过,该角色在 Merchant Center 中拥有的权限最少。如需允许此用户进行其他 API 调用或在 Merchant Center 界面中管理设置,您需要向其授予其他角色,例如 STANDARD 或 ADMIN。如需详细了解 Merchant Center 角色,请参阅“访问权限类型”。

“API developer”角色拥有哪些权限?

API developer 角色是 Merchant Center 中权限最少的角色。如果您打算使用开发者联系邮箱来授权对 Merchant API 的调用,我们建议您添加 ADMIN 或 STANDARD 权限,以便用户能够执行 API 调用。

我是否需要注册调用 API 的每个开发者用户或服务账号?

不需要。开发者注册与用于进行 API 调用的 Google Cloud 项目相关联,而不是与个别用户或服务账号相关联。Google Cloud 项目成功注册到您的主要 Merchant Center 账号后,您可以使用通过关联的 Google Cloud 项目管理的任何身份(使用 OAuth 凭证或服务账号)来授权 Merchant API 调用,前提是这些身份存在于您的 Merchant Center 中,并且已分配 ADMIN 角色。

完成初始注册后,如何更改开发者联系邮箱?

如需管理或更改联系人,请使用标准 accounts.users 服务或 Merchant Center 界面中的“访问权限和服务”页面,添加或移除具有 API developer 角色的用户。

如果从 Merchant Center 账号中移除最后一个“API developer”用户,会出现什么情况?

系统会触发 30 天的宽限期,以避免服务立即中断。 在此期间:

  • 管理员将通过电子邮件收到三条重要服务通知(通常在屏蔽前 30 天、17 天和 4 天左右)。
  • API 调用将继续正常运行。
  • 如果未在宽限期结束前添加新的 API developer,则来自关联 Google Cloud 项目的 API 调用将被屏蔽,并显示 AUTH_GCP_NOT_REGISTERED 错误。

30 天宽限期结束后,来自关联的 Google Cloud 项目的 API 调用会被屏蔽,并且会收到 AUTH_GCP_NOT_REGISTERED 错误,直到恢复有效的开发者联系信息。

如果删除已完成开发者注册的 Merchant Center ID,会发生什么情况?

在集成处于有效状态时,请勿删除用于开发者注册的 Merchant Center 账号。删除此账号会立即中断您的集成,并且您将无法再从关联的 Google Cloud 项目执行 API 调用。

如果您必须删除该 Merchant Center 账号,应先调用 unregisterGcp 方法安全地移除关联,然后再继续删除 Merchant Center ID。如果您想继续使用 Merchant API,则需要在注销当前 Merchant Center ID 后立即注册另一个 Merchant Center ID。只有在完成这些步骤后,才能继续删除 Merchant Center ID。

为什么我在 Merchant Center 中看不到“API developer”角色?

只有在为给定 Merchant Center 账号执行开发者注册后,API developer 角色才会显示在 Merchant Center 界面中。未注册的 Merchant Center 账号不会看到 API developer 角色。

特殊应用场景

关于特殊应用场景的常见问题:

我是管理多个商家账号的代理机构或第三方开发者。实现这一目标的最佳方式是什么?

第三方开发者和代理机构应维护自己的主 Merchant Center 账号,并将所有 Google Cloud 项目注册到该单一集中式账号。请勿将您的 Google Cloud 项目注册到每个商家的账号。

如何注册 Google Apps 脚本?

Apps 脚本通常在默认 Google Cloud 项目中运行。您必须向 Merchant Center 账号注册此默认 Google Cloud ID。Google Cloud ID 由 API 自动获取,因此您无需将其作为参数提供。

我可以检查某个 Merchant Center ID 是否已注册到特定的 Google Cloud 项目 ID 吗?

可以。您可以使用 getAccountForGcpRegistration 方法查看哪个 Merchant Center ID 已注册到特定 Google Cloud 项目。如需移除 Google Cloud 项目与 Merchant Center 账号的关联,请使用 unregisterGcp 方法。

适用于 Shopify 上的 Google & YouTube 应用用户从 Content API 到 Merchant API 的迁移

关于第三方平台和应用从 Content API 迁移到 Merchant API 的常见问题:

从 Content API 迁移到 Merchant API,我需要做什么吗?

您无需执行任何操作。如果您使用 Shopify 上的 Google & YouTube 应用来管理 Merchant Center Feed,则从 Content API 到 Merchant API 的迁移将由 Google 处理。

迁移会更改我的商品 ID 吗?

不会,迁移不会更改 Merchant Center Feed 中的商品 ID。

我是否需要重新安装 Shopify 上的 Google & YouTube 应用才能完成转换?

您无需执行任何操作即可完成转换。您无需重新安装 Google & YouTube 应用。

为什么我仍然会在 Merchant Center 中看到 Content API 数据源?

在过渡到 Merchant API 期间,Content API 数据源可能仍会显示在 Merchant Center 中。这些实例属于预期之内,您无需采取任何操作。