多使用者驗證工作流程

在多使用者驗證工作流程中,您會建構自己的 OAuth 流程來驗證使用者。Google Identity 說明文件中討論了多種應用程式類型,以及支援每種應用程式類型所需的 Google Cloud 控制台專案設定。Google Ads API 支援所有這些應用程式類型。請注意以下額外技術細節:

  1. 將應用程式設定為要求下列 OAuth 2.0 範圍:

    https://www.googleapis.com/auth/adwords
    
  2. 應用程式可能必須在使用者離線時,代表使用者發出 API 呼叫。常見的用途是下載帳戶指標,以便產生報表及進行帳戶分析。因此,建議您要求 OAuth 離線存取權。

  3. 完成 OAuth 應用程式驗證程序,即可驗證應用程式。

工作流程總覽

實作多使用者驗證工作流程包含三個主要步驟:

  1. 將使用者導向 OAuth 同意畫面:將每位使用者重新導向至 Google 的 OAuth 2.0 授權端點,要求 https://www.googleapis.com/auth/adwords 範圍和離線存取權。
  2. 將授權碼換成權杖:使用者授予權限後,請擷取傳回的授權碼,並換成存取權杖和更新權杖。
  3. 儲存權杖並在執行階段初始化用戶端:在資料儲存庫中安全地儲存每個使用者的更新權杖,並在執行階段初始化 GoogleAdsClient 執行個體時傳遞使用者的憑證。

用戶端程式庫設定

授權使用者並取得 OAuth 2.0 憑證後,請按照程式設計語言對應分頁中的操作說明,設定用戶端程式庫。

Java

您可以在執行階段初始化 GoogleAdsClient 執行個體,方法是使用從使用者取得的憑證,並向這些使用者的帳戶發出 API 呼叫。

UserCredentials credentials =
    UserCredentials.newBuilder()
        .setClientId("INSERT_OAUTH2_CLIENT_ID_HERE")
        .setClientSecret("INSERT_OAUTH2_CLIENT_SECRET_HERE")
        .setRefreshToken("INSERT_OAUTH2_REFRESH_TOKEN_HERE")
        .build();

// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
    GoogleAdsClient.newBuilder()
        // Sets the OAuth credentials which provide Google Ads account
        // access.
        .setCredentials(credentials)
        // Optional: sets the login customer ID.
        .setLoginCustomerId(Long.valueOf("INSERT_LOGIN_CUSTOMER_ID_HERE"))
        .build();

如需其他選項,請參閱設定指南。

.NET

您可以在執行階段初始化 GoogleAdsClient 執行個體,方法是使用從使用者取得的憑證,並向這些使用者的帳戶發出 API 呼叫。

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};

GoogleAdsClient client = new GoogleAdsClient(config);

如需其他選項,請參閱設定指南。

Python

您可以在執行階段初始化 GoogleAdsClient 執行個體,方法是使用從使用者取得的憑證,並向這些使用者的帳戶發出 API 呼叫。

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "refresh_token": "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    "client_id": "INSERT_OAUTH2_CLIENT_ID_HERE",
    "client_secret": "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    "use_proto_plus": True,
}

client = GoogleAdsClient.load_from_dict(credentials)

如需其他選項,請參閱設定指南。

PHP

您可以在執行階段初始化 GoogleAdsClient 執行個體,方法是使用從使用者取得的憑證,並向這些使用者的帳戶發出 API 呼叫。

$oAuth2Credential = (new OAuth2TokenBuilder())
    ->withClientId('INSERT_OAUTH2_CLIENT_ID_HERE')
    ->withClientSecret('INSERT_OAUTH2_CLIENT_SECRET_HERE')
    ->withRefreshToken('INSERT_OAUTH2_REFRESH_TOKEN_HERE')
    ->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
    ->build();

如需其他選項,請參閱設定指南。

小茹

您可以在執行階段初始化 GoogleAdsClient 執行個體,方法是使用從使用者取得的憑證,並向這些使用者的帳戶發出 API 呼叫。

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
  config.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  config.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
  config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

如需其他選項,請參閱設定指南。

Perl

您可以在執行階段初始化 GoogleAdsClient 執行個體,方法是使用從使用者取得的憑證,並向這些使用者的帳戶發出 API 呼叫。

my $api_client = Google::Ads::GoogleAds::Client->new({
  login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});

my $oauth2_handler = $api_client->get_oauth2_applications_handler();
$oauth2_handler->set_client_id("INSERT_OAUTH2_CLIENT_ID_HERE");
$oauth2_handler->set_client_secret("INSERT_OAUTH2_CLIENT_SECRET_HERE");
$oauth2_handler->set_refresh_token("INSERT_OAUTH2_REFRESH_TOKEN_HERE");

如需其他選項,請參閱設定指南。

curl

首先,請使用 HTTP 用戶端擷取 OAuth 2.0 存取權杖。本指南使用 curl 指令。

curl \
  --data "grant_type=refresh_token" \
  --data "client_id=CLIENT_ID" \
  --data "client_secret=CLIENT_SECRET" \
  --data "refresh_token=REFRESH_TOKEN" \
  https://oauth2.googleapis.com/token

您可以在 API 呼叫中使用存取權杖。下列範例說明如何使用 GoogleAdsService.SearchStream 方法,擷取帳戶中的廣告活動,並執行廣告活動報表。本指南未涵蓋報表的詳細資料。

curl -i -X POST \
  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

query.json 的內容如下:

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}