เวิร์กโฟลว์การตรวจสอบสิทธิ์แบบหลายผู้ใช้

ในเวิร์กโฟลว์การตรวจสอบสิทธิ์ผู้ใช้หลายคนหนึ่งเครื่อง คุณจะสร้างขั้นตอน OAuth ของตนเองเพื่อตรวจสอบสิทธิ์ผู้ใช้ มีแอปหลายประเภทที่กล่าวถึงในเอกสารประกอบของ Google Identity พร้อมกับการกำหนดค่าโปรเจ็กต์คอนโซล Google API ที่คุณต้องใช้เพื่อรองรับแอปแต่ละประเภท Google Ads API รองรับแอปทุกประเภทเหล่านี้ รายละเอียดทางเทคนิคเพิ่มเติมที่ควรคำนึงถึงมีดังนี้

  • กำหนดค่าแอปพลิเคชันเพื่อขอขอบเขต OAuth 2.0 ต่อไปนี้

    https://www.googleapis.com/auth/adwords
    
  • แอปของคุณอาจต้องทำการเรียก API ในนามของผู้ใช้ขณะที่ผู้ใช้ออฟไลน์อยู่ สถานการณ์ที่พบบ่อยคือการดาวน์โหลดเมตริกบัญชีแบบออฟไลน์เพื่อสร้างรายงานและทำการวิเคราะห์บัญชี ด้วยเหตุนี้ เราจึงขอแนะนำให้ขอสิทธิ์เข้าถึงแบบออฟไลน์ของ OAuth

  • ทำกระบวนการยืนยันแอป OAuth ให้เสร็จสมบูรณ์เพื่อรับการยืนยันแอป

ภาพรวมของเวิร์กโฟลว์

การติดตั้งใช้งานเวิร์กโฟลว์การตรวจสอบสิทธิ์แบบผู้ใช้หลายคนมี 3 ขั้นตอนหลักๆ ดังนี้

  1. นำผู้ใช้ไปยังหน้าจอขอความยินยอม OAuth: เปลี่ยนเส้นทางผู้ใช้แต่ละรายไปยังปลายทางการให้สิทธิ์ OAuth 2.0 ของ Google ที่ขอขอบเขต 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();

ดูตัวเลือกเพิ่มเติมได้ที่คู่มือการกำหนดค่า

Ruby

คุณสามารถเริ่มต้นอินสแตนซ์ 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/v26/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"
}