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 2.0 政策頁面。

提出應用程式驗證要求

凡是可存取 Content API 的應用程式,都必須完成 OAuth 驗證程序。未存取應用程式且存取 Content API 的使用者將收到警告,而且應用程式會有功能受限。 在這個情境中,應用程式定義為 Google Cloud 中不重複的 OAuth 2.0 用戶端 ID。

驗證程序通常需要 3-5 個工作天。如要進一步瞭解此程序及提交驗證要求,請參閱應用程式驗證一文。

這項政策適用於所有應用程式,我們建議所有應用程式都必須盡快執行 Google OAuth 驗證程序,以免服務中斷。

授權範例

以下程式碼示範如何在用戶端使用 OAuth 2.0 來設定用戶端並授權要求。您可以在範例與程式庫頁面中查看其他語言。

PHP

這個範例使用網路應用程式流程。重新導向 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;
}

現在您已通過驗證,可以建立 Service 物件以發出 API 要求。

require_once 'Google/Service/ShoppingContent.php';

$service = new Google_Service_ShoppingContent($client);