OAuth

注意:本文档介绍了 用于请求访问其他方的 数据。如果您要开发 需要访问客户端的 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 2.0 政策页面 了解详情。

请求验证应用

任何访问 Content API 的应用都必须通过 OAuth 验证流程。用户 访问 Content API 但未经验证的应用将会收到警告,并且应用的功能会受到限制。 在这种情况下,应用是指 Google Cloud 中唯一的 OAuth 2.0 客户端 ID。

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

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

授权示例

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

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 请求。

require_once 'Google/Service/ShoppingContent.php';

$service = new Google_Service_ShoppingContent($client);