使用 OAuth 2.0 服务帐号访问 Content API for Shopping

服务帐号是一种特殊的 Google 帐号。应用可以使用此类帐号通过 OAuth 2.0 以编程方式访问 Google API。服务帐号使用 OAuth 2.0 流,无需人工授权,但需要使用只有您的应用可以访问的密钥文件。本指南讨论如何使用服务帐号访问 Content API for Shopping。

注意:使用服务帐号进行身份验证的应用只能访问您自己的 Merchant Center 帐号。如果您要编写一种第三方应用,而此应用需要访问客户的 Merchant Center 帐号,请参阅向请求授权指南。

前提条件

使用服务帐号访问 Content API for Shopping 的步骤

  1. 生成服务帐号凭据或访问您已生成的公共凭据。您需要创建 OAuth 2.0 客户端 ID 并获取 *.json 私钥文件:
    1. 转到 Google API 控制台
    2. 在页面顶部的下拉菜单中选择一个项目。如果您尚未创建任何项目,请点击 Create Project,创建一个项目。
    3. 如果您还没有为此项目启用 Content API for Shopping,请在 Google API 列表中搜索并启用它。
    4. 在左侧边栏中,选择 Credentials。您可能需要点击左上角的左箭头才能看到此信息。
    5. 要设置服务帐号,请选择 Create credentials,然后选择 Service account key
      创建服务帐号凭据的屏幕截图。
    6. 在下一页上,从下拉列表中选择 New service account
    7. 为新服务帐号命名。这也用作服务帐号 ID 的默认用户名。请记住此服务帐号 ID,包括“@”字符后面的部分,以便稍后使用。

      选择服务帐号的角色不会影响对 Content API 进行的调用,因为对 Content API 方法的访问是由与 Merchant Center 中的服务帐号 ID 相关联的角色决定的。如果您不确定要选择什么,则只需选择 Project►Viewer。

      新服务帐号名称的屏幕截图。
    8. 为密钥类型选择 JSON,然后点击 Create
    9. Create 按钮将变为 Creating...,而且在密钥生成操作完成后,系统会自动将私钥下载为 *.json 文件。

      重要提示:请保护 *.json 密钥文件以允许服务帐号访问其获授权的 Google 服务。每次仅允许服务帐号访问一个 Google API 不失为一种好办法。这是一种预防措施,即使在服务帐号的 *.json 密钥文件被泄露的情况下,仍能减少攻击者可以访问的数据量。

    10. 您将返回到“Credentials”页面,并且应该会在您的帐号的服务帐号密钥列表中看到新服务帐号。
  2. 将新服务帐号作为用户添加到 Merchant Center 帐号中。如果您是第三方开发者,则需要将您的客户端设置为自动执行此步骤。
    1. 转到您的 Merchant Center 帐号
    2. 转到 Merchant Center 帐号设置中的“Users”列表。
    3. 点击 + 按钮,然后将服务帐号 ID 用作新用户的电子邮件地址。

      如果您之前未记下服务帐号 ID,请转到 Service Accounts 管理页面,然后选择您创建的项目。

    4. 指定用户访问权限和电子邮件通知。请注意,使用 Accounts 服务需要管理员访问权限。 “添加服务帐号用户”页面的屏幕截图。
    5. 点击“Cancel”左侧的蓝色框。您将返回到用户列表,其中应列出具有所选用户角色的服务帐号 ID。
    6. 对您要添加的其他所有服务帐号重复执行上述流程。
    7. 转到“Users”标签页可以查看现有服务帐号用户。这些用户的电子邮件地址都以“gserviceaccount.com”结尾。
  3. 现在,您可以使用服务帐号访问 Merchant Center 帐号,方法是使用 Google 应用默认凭据流程或直接使用服务帐号流程。Content API for Shopping 示例显示如何采用每种受支持的编程语言来使用两个流获取服务帐号凭据。请查看代码示例以试用新服务帐号,并了解在您自己的代码中使用服务帐号需要做哪些更改。

常见问题解答

我可以使用我的服务帐号登录 Merchant Center Web 界面吗?

不可以。服务帐号不是常规 Google 帐号,也无法访问 Merchant Center Web 界面。

我需要多久刷新一次服务帐号访问令牌?

在 Google OAuth 2.0 授权服务器发布访问令牌的 1 小时后,访问令牌便会过期。在访问令牌过期后,应用应使用客户端库来提取另一个访问令牌。