OAuth

注意:本文档介绍了用于请求访问其他方数据的三足式 OAuth2 流程。如果您正在开发的第三方应用需要访问客户的 Merchant Center 帐号,请使用此身份验证流程。如果您开发的是仅访问您自己的 Merchant Center 帐号的内部应用,请改为参阅服务帐号指南。

您的应用向 Google Content API for Shopping 发送的每个请求都必须包含授权令牌。Google 也可通过此令牌识别您的应用。

关于授权协议

您的应用必须使用 OAuth 2.0 向请求授权,其他任何授权协议均不受支持。如果您的应用使用使用 Google 帐号登录,系统会代您执行授权方面的某些操作。

使用 OAuth 2.0 向请求授权

向 Google Content API for Shopping 发出的所有请求都必须由经过身份验证的用户授权。

根据您所编写的应用的类型,OAuth 2.0 的具体授权流程可能会有所不同。下面是适用于所有应用类型的大致流程:

  1. 开发应用时,您需要使用 Google API 控制台注册该应用。然后,Google 会提供您稍后需要用到的信息,例如客户端 ID 和客户端密钥。
  2. 在 Google API 控制台中激活 Google Content API for Shopping。(如果 API 控制台中未列出该 API,请跳过这一步。)
  3. 当您的应用需要访问用户数据时,它会请求 Google 提供特定范围的访问权限。
  4. Google 会向相应用户显示权限请求页面,让用户授权您的应用请求他们的某些数据。
  5. 待该用户同意后,Google 会为您的应用提供一个时效很短的访问令牌
  6. 您的应用会请求获取用户数据,并在请求中附上该访问令牌。
  7. 如果 Google 确定您的请求及令牌有效,就会返回您所请求的数据。

有些流程还包含其他步骤,例如使用刷新令牌获取新的访问令牌。如需详细了解适用于各类应用的不同流程,请参阅 Google 的 OAuth 2.0 文档

以下是 Google Content API for Shopping 的 OAuth 2.0 范围信息:

范围 含义
https://www.googleapis.com/auth/content 读取/写入权限。

要通过 OAuth 2.0 请求访问权限,您的应用既需要授权范围信息,也需要 Google 在您注册应用时提供的信息(如客户端 ID 和客户端密钥)。

提示:Google API 客户端库可帮您处理部分授权流程,并且支持多种编程语言;有关详情,请参阅库和示例页面

获取 OAuth 范围

我们建议您使用增量授权来避免选择范围时出现问题。

如果您请求多个 OAuth 范围,则默认情况下,系统会在应用的同意屏幕中取消选择 OAuth 范围。当应用向用户显示同意屏幕时,他们必须手动选择每个范围以授予访问权限。

检查来自 OAuth 请求的响应以验证您是否获得了适当的范围。

如需了解详情,请参阅 OAuth 2.0 政策页面。

请求应用验证

任何访问 Content API 的应用都必须通过 OAuth 验证审核流程。访问 Content API 的未经验证应用的用户会收到警告,并且应用的功能会受到限制。这里所说的应用在 Google Cloud 中定义为唯一的 OAuth 2.0 客户端 ID。

验证过程通常需要 3-5 个工作日才能完成。如需详细了解此流程和提交验证请求,请参阅应用验证

此政策适用于所有应用,我们建议所有应用尽快完成 Google OAuth 验证流程,以避免业务中断。

授权示例

以下代码演示了如何使用适用于 Web 应用的 OAuth 2.0 配置客户端以及向请求授权。我们的示例和库页面上提供了其他语言。

PHP

此示例使用 Web 应用流程。重定向 URI 应该是此 PHP 页面的 URI。

<?php
require_once 'Google/Client.php';

session_start();

$client = new Google_Client();
$client->setApplicationName('Sample Content API application');
$client->setClientId('YOUR_CLIENT_ID');
$client->setClientSecret('YOUR_CLIENT_SECRET');
$client->setRedirectUri('YOUR_REDIRECT_URI');
$client->setScopes('https://www.googleapis.com/auth/content');

if (isset($_SESSION['oauth_access_token'])) {
  $client->setAccessToken($_SESSION['oauth_access_token']);
} elseif (isset($_GET['code'])) {
  $token = $client->authenticate($_GET['code']);
  $_SESSION['oauth_access_token'] = $token;
} else {
  header('Location: ' . $client->createAuthUrl());
  exit;
}

现在您已通过身份验证,接下来可创建发出 API 请求的 Service 对象。

require_once 'Google/Service/ShoppingContent.php';

$service = new Google_Service_ShoppingContent($client);