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

โฟลว์การตรวจสอบสิทธิ์ผู้ใช้รายเดียวจะใช้ประโยชน์จากฟีเจอร์การให้สิทธิ์และการจัดการผู้ใช้ที่ 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 Console ซึ่งต้องมีขั้นตอนการกำหนดค่ามากกว่าการสร้างบัญชีบริการและคีย์
  2. แอปของคุณอาจต้องผ่านกระบวนการยืนยันแอป Google Cloud เพิ่มเติม
  3. หากผู้ใช้ที่ได้รับอนุญาตออกจากทีมหรือบริษัท แอปอาจหยุดทำงานหากคุณนำผู้ใช้ออกจากบัญชีหรือปิดใช้บัญชีผู้ใช้ บัญชีบริการไม่ได้เชื่อมโยงกับผู้ใช้แต่ละราย จึงหลีกเลี่ยงความเสี่ยงนี้ได้
  4. ผู้ใช้ที่ให้สิทธิ์บัญชี Google Ads ควรใช้มาตรการป้องกันเพิ่มเติม เช่น เปิดใช้การตรวจสอบสิทธิ์แบบ 2 ปัจจัยเพื่อป้องกันไม่ให้บัญชี Google ถูกบุกรุกเนื่องจากความปลอดภัยไม่ดี มัลแวร์ หรือฟิชชิง บัญชีบริการมีความเสี่ยงต่อปัญหานี้น้อยกว่า เนื่องจากโหมดการโจมตีบางโหมดเหล่านี้ไม่ได้ใช้กับบัญชีบริการโดยตรง

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

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

  2. สร้าง Client ID และ Client Secret โดยทำตาม วิธีการ เมื่อสร้างไคลเอ็นต์ 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/v21/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"
}