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

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

  • คุณให้สิทธิ์เข้าถึงบัญชี Google Ads ทั้งหมด ที่แอปควรจัดการแก่ผู้ใช้รายเดียว
  • ผู้ใช้ให้สิทธิ์แอปของคุณในการจัดการบัญชี Google Ads ในนามของผู้ใช้ ซึ่งจะให้สิทธิ์เข้าถึงบัญชี Google Ads ทั้งหมดแก่แอป

เนื่องจากมีผู้ใช้เพียงรายเดียว คุณจึงใช้เครื่องมือต่างๆ เช่น gcloud CLI หรือ ตัวอย่างโค้ด GenerateUserCredential แทนการสร้างเวิร์กโฟลว์การตรวจสอบสิทธิ์ผู้ใช้ OAuth 2.0 ของคุณเองได้

กรณีการใช้งานที่เกี่ยวข้องสำหรับเวิร์กโฟลว์นี้คือเมื่อบัญชีของคุณเข้าถึงได้ ผ่านการเข้าสู่ระบบของผู้ใช้เพียงไม่กี่ราย (เช่น ผู้ใช้ 3-4 ราย) ดังนั้นความพยายามในการพัฒนา เพื่อสร้าง เวิร์กโฟลว์การตรวจสอบสิทธิ์ผู้ใช้ OAuth แบบเต็มจึงไม่คุ้มค่าเมื่อเทียบกับความพยายามในการขอรับการให้สิทธิ์สำหรับผู้ใช้ 3-4 รายโดยใช้เครื่องมือบรรทัดคำสั่ง เช่น gcloud CLI

ข้อเสีย

เวิร์กโฟลว์นี้มีข้อเสียบางประการเมื่อเทียบกับเวิร์กโฟลว์บัญชีบริการ ดังนี้

  1. เวิร์กโฟลว์การตรวจสอบสิทธิ์ผู้ใช้กำหนดให้คุณต้องสร้างรหัสไคลเอ็นต์และข้อมูลลับของไคลเอ็นต์ OAuth 2.0 ในคอนโซล Google Cloud ซึ่งต้องใช้ขั้นตอนการกำหนดค่ามากกว่าการสร้างบัญชีบริการและคีย์
  2. แอปของคุณอาจต้องผ่านกระบวนการยืนยันแอป Google Cloud เพิ่มเติม
  3. หากผู้ใช้ที่ได้รับอนุญาตออกจากทีมหรือบริษัท แอปของคุณอาจหยุดทำงานหากคุณนำผู้ใช้ออกจากบัญชีหรือปิดใช้บัญชีผู้ใช้ บัญชีบริการไม่ได้เชื่อมโยงกับผู้ใช้แต่ละราย จึงหลีกเลี่ยงความเสี่ยงนี้ได้
  4. ผู้ใช้ที่ให้สิทธิ์บัญชี Google Ads ควรใช้ความระมัดระวังเป็นพิเศษ เช่น เปิดใช้การตรวจสอบสิทธิ์แบบ 2 ปัจจัย เพื่อป้องกันไม่ให้บัญชี Google ถูกบุกรุกเนื่องจากความปลอดภัยไม่ดี มัลแวร์ หรือฟิชชิง บัญชีบริการมีความเสี่ยงต่อปัญหานี้น้อยกว่าเนื่องจากวิธีการโจมตีบางวิธีใช้ไม่ได้กับบัญชีบริการโดยตรง

สร้างข้อมูลเข้าสู่ระบบ

  1. ทำตามวิธีการเพื่อกำหนดค่าหน้าจอขอความยินยอม OAuth สำหรับแอปพลิเคชันและเพิ่มhttps://www.googleapis.com/auth/adwordsเป็นขอบเขต OAuth 2.0 ดูรายละเอียดได้ที่ การตั้งค่าหน้าจอขอความยินยอม OAuth

  2. สร้างรหัสไคลเอ็นต์และข้อมูลลับของไคลเอ็นต์โดยทำตาม วิธีการ เมื่อสร้างไคลเอ็นต์ OAuth 2.0 แล้ว ให้ดาวน์โหลดไฟล์ JSON ของไคลเอ็นต์โดยคลิกไอคอนดาวน์โหลดไคลเอ็นต์ OAuth ก่อน แล้วคลิกปุ่มดาวน์โหลด JSON ในหน้าจอถัดไป บันทึกไฟล์เป็น credentials.json

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

  4. ดาวน์โหลดและติดตั้ง gcloud CLI เมื่อติดตั้งแล้ว ให้ตรวจสอบว่าเครื่องมือทำงานอย่างถูกต้องโดยเรียกใช้คำสั่ง gcloud version จากพรอมต์บรรทัดคำสั่ง เอาต์พุตอาจมีลักษณะดังนี้

    :~$ gcloud version
    Google Cloud SDK 492.0.0
    alpha 2024.09.06
    beta 2024.09.06
    bq 2.1.8
    bundled-python3-unix 3.11.9
    core 2024.09.06
    enterprise-certificate-proxy 0.3.2
    gcloud-crc32c 1.0.0
    gsutil 5.30
  5. สร้างโทเค็นการรีเฟรช OAuth 2.0 โดยเรียกใช้เครื่องมือ gcloud CLI ดังนี้

    gcloud auth application-default 
    login --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform
    --client-id-file=<path_to_credentials.json>

    ไฟล์ credentials.json มาจากขั้นตอนก่อนหน้า

  6. คำสั่ง gcloud จะเปิดหน้าต่างเข้าสู่ระบบบัญชี Google ในหน้าต่างเบราว์เซอร์ใหม่และนำคุณผ่านขั้นตอนการตรวจสอบสิทธิ์ OAuth 2.0 ตรวจสอบว่าคุณลงชื่อเข้าใช้ในฐานะผู้ใช้ที่คุณเลือกจากขั้นตอนก่อนหน้า หากแอปของคุณ ไม่ได้รับการยืนยัน คุณอาจเห็นหน้าจอ คำเตือน ในกรณีดังกล่าว คุณสามารถคลิกแสดงขั้นสูง ลิงก์ แล้วคลิกไปที่ PROJECT_NAME (ไม่ได้รับการยืนยัน) ตัวเลือกได้อย่างปลอดภัย

  7. หลังจากตรวจสอบขอบเขตแล้ว ให้คลิกปุ่มดำเนินการต่อ เพื่อให้สิทธิ์ เบราว์เซอร์จะไปยัง https://cloud.google.com/sdk/auth_success ซึ่งบ่งชี้ว่าการตรวจสอบสิทธิ์สำเร็จ หน้าเว็บจะแสดงข้อความต่อไปนี้

    Authorization code granted. Close this tab.

    คำสั่ง gcloud จะพิมพ์ข้อความต่อไปนี้

    Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]

    ตอนนี้ให้เปิดไฟล์ application_default_credentials.json เนื้อหาของไฟล์ควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

    {
        "account": "",
        "client_id": "******.apps.googleusercontent.com",
        "client_secret": "******",
        "refresh_token": "******",
        "type": "authorized_user",
        "universe_domain": "googleapis.com"
    }

การกำหนดค่าไลบรารีของไคลเอ็นต์

เลือกแท็บที่ตรงกับภาษาโปรแกรมเพื่อดูวิธีการกำหนดค่าไลบรารีของไคลเอ็นต์

Java

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ ads.properties

api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

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

.NET

คุณสามารถเริ่มต้นอินสแตนซ์ GoogleAdsClient ได้ในขณะรันไทม์ โดยใช้ข้อมูลเข้าสู่ระบบที่คุณได้รับจากผู้ใช้ที่คุณกำลังเรียกใช้ API สำหรับบัญชีของผู้ใช้

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN",
    ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

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

Python

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ google-ads.yaml

client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE

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

PHP

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ google_ads_php.ini

[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"

[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"

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

Ruby

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ google_ads_config.rb

Google::Ads::GoogleAds::Config.new do |c|
    c.client_id = 'INSERT_CLIENT_ID_HERE'
    c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
    c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
    c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
    c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

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

Perl

กำหนดค่าคีย์ต่อไปนี้ในไฟล์ googleads.properties

clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_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://www.googleapis.com/oauth2/v3/token

ตอนนี้คุณสามารถใช้โทเค็นเพื่อการเข้าถึงในการเรียกใช้ API ได้แล้ว ตัวอย่างต่อไปนี้ แสดงวิธีเรียกใช้รายงานแคมเปญโดยใช้ GoogleAdsService.SearchStream เพื่อดึงข้อมูล แคมเปญในบัญชี คู่มือนี้ไม่ได้กล่าวถึงรายละเอียดของ การรายงาน

curl -i -X POST https://googleads.googleapis.com/v24/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "developer-token: DEVELOPER_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"
}