Google Ads API ใช้โปรโตคอล OAuth 2.0 สำหรับการตรวจสอบสิทธิ์และการให้สิทธิ์เช่นเดียวกับ Google APIs อื่นๆ OAuth 2.0 ช่วยให้แอปพลิเคชันไคลเอ็นต์ Google Ads API เข้าถึงบัญชี Google Ads ของผู้ใช้ได้โดยไม่ต้องจัดการหรือจัดเก็บข้อมูลการเข้าสู่ระบบของผู้ใช้
ทำความเข้าใจรูปแบบการเข้าถึง Google Ads
หากต้องการทํางานกับ Google Ads API อย่างมีประสิทธิภาพ โปรดทําความเข้าใจวิธีการทํางานของรูปแบบการเข้าถึง Google Ads ดูคู่มือรูปแบบการเข้าถึง Google Ads
เวิร์กโฟลว์ OAuth
เวิร์กโฟลว์ที่ใช้กันทั่วไปเมื่อทำงานกับ Google Ads API มีอยู่ 3 แบบ
โฟลว์บัญชีบริการ
เราขอแนะนำให้ใช้เวิร์กโฟลว์นี้หากเวิร์กโฟลว์ของคุณไม่จำเป็นต้องมีการโต้ตอบกับมนุษย์ เวิร์กโฟลว์นี้ต้องมีขั้นตอนการกำหนดค่า ซึ่งผู้ใช้จะเพิ่มบัญชีบริการลงในบัญชี Google Ads จากนั้นแอปจะใช้ข้อมูลเข้าสู่ระบบของบัญชีบริการเพื่อจัดการบัญชี Google Ads ของผู้ใช้ได้ ไลบรารี Python มีการกำหนดค่าดังนี้
หากใช้ไฟล์
google-ads.yamlหรือสตริง YAML ให้เพิ่มข้อมูลต่อไปนี้ในการกำหนดค่าเพื่อตั้งค่าเส้นทางไปยังไฟล์ JSON ของคีย์ส่วนตัวในสภาพแวดล้อมในเครื่อง (พร้อมกับimpersonated_email(ไม่บังคับ) หากใช้การมอบสิทธิ์ทั่วทั้งโดเมน)json_key_file_path: JSON_KEY_FILE_PATH # Optional: only set if using Google Workspace domain-wide delegation: # impersonated_email: IMPERSONATED_EMAILจากนั้นเรียกใช้เมธอด
load_from_storageหรือload_from_stringดังนี้from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()หากคุณใช้
dictเพื่อกำหนดค่าไลบรารี ให้ใส่คู่คีย์-ค่า ต่อไปนี้และเรียกใช้เมธอดload_from_dictโดยส่ง การกำหนดค่าdictเข้าไปfrom google.ads.googleads.client import GoogleAdsClient configuration = { # ... "json_key_file_path": JSON_KEY_FILE_PATH, # ... } client = GoogleAdsClient.load_from_dict(configuration)หากคุณใช้ตัวแปรสภาพแวดล้อม ให้เพิ่มรายการต่อไปนี้ลงในการกำหนดค่าหรือสภาพแวดล้อม
bashexport GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATHจากนั้นเรียกใช้เมธอด
load_from_envดังนี้from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
หากมีตัวเลือกการกำหนดค่า json_key_file_path ในวิธีการกำหนดค่าเหล่านี้ ตัวเลือก use_application_default_credentials จะเป็น False หรือไม่ได้ตั้งค่า และคีย์ข้อมูลเข้าสู่ระบบของผู้ใช้ OAuth (client_id, client_secret และ refresh_token) ไม่ได้ตั้งค่าหรือทำเครื่องหมายเป็นความคิดเห็น ไลบรารีจะให้สิทธิ์โดยอัตโนมัติโดยใช้ขั้นตอนบัญชีบริการ
ดูข้อมูลเพิ่มเติมได้ที่คู่มือเวิร์กโฟลว์บัญชีบริการ
ขั้นตอนการตรวจสอบสิทธิ์ผู้ใช้รายเดียว
คุณสามารถใช้เวิร์กโฟลว์นี้ได้หากใช้บัญชีบริการไม่ได้ เวิร์กโฟลว์นี้ต้องมีการกำหนดค่า 2 ขั้นตอนดังนี้
ให้สิทธิ์ผู้ใช้รายเดียวเข้าถึงบัญชีทั้งหมดที่จะจัดการโดยใช้ Google Ads API แนวทางที่พบบ่อยคือการให้สิทธิ์ผู้ใช้เข้าถึงบัญชีดูแลจัดการ Google Ads API และลิงก์บัญชี Google Ads ทั้งหมดภายใต้บัญชีดูแลจัดการนั้น
ผู้ใช้เรียกใช้เครื่องมือ เช่น gcloud CLI หรือตัวอย่างโค้ด
generate_user_credentialsเพื่อให้สิทธิ์แอปของคุณจัดการบัญชี Google Ads ทั้งหมดในนามของผู้ใช้
คุณสามารถเริ่มต้นไลบรารีได้โดยใช้ข้อมูลเข้าสู่ระบบ OAuth 2.0 ของผู้ใช้ดังนี้
หากใช้เครื่องมือ gcloud CLI (แนะนำ)
ทำตามเอกสารประกอบสร้างข้อมูลเข้าสู่ระบบเพื่อตั้งค่าข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (ADC) ในสภาพแวดล้อมในเครื่อง
เพิ่มการกำหนดค่าต่อไปนี้ลงในสตริง
google-ads.yamlหรือ YAMLuse_application_default_credentials: trueจากนั้นเรียกใช้เมธอด
load_from_storageหรือload_from_stringดังนี้from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()หากคุณใช้
dictเพื่อกำหนดค่าไลบรารี ให้ใส่คู่คีย์-ค่าต่อไปนี้และเรียกใช้เมธอดload_from_dictfrom google.ads.googleads.client import GoogleAdsClient configuration = { # ... "use_application_default_credentials": True, # ... } client = GoogleAdsClient.load_from_dict(configuration)หากคุณใช้ตัวแปรสภาพแวดล้อม ให้เพิ่มรายการต่อไปนี้ลงในการกำหนดค่าหรือสภาพแวดล้อม
bashexport GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS=trueจากนั้นเรียกใช้เมธอด
load_from_envดังนี้from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
หากจัดการโทเค็น OAuth โดยตรง
ทำตามขั้นตอนเพื่อตั้งค่าโปรเจ็กต์คอนโซลและดาวน์โหลดไฟล์ JSON ที่มีรหัสไคลเอ็นต์และรหัสลับไคลเอ็นต์ของโปรเจ็กต์
โคลนไลบรารีของไคลเอ็นต์ Python ลงในเครื่องและเปลี่ยนเป็นไดเรกทอรีของไลบรารีนั้น โดยทำดังนี้
git clone https://github.com/googleads/google-ads-python.git cd google-ads-pythonเรียกใช้ตัวอย่างโดยระบุ Absolute Path ไปยังไฟล์ JSON ที่ดาวน์โหลดในขั้นตอนที่ 1 ดังนี้
python examples/authentication/generate_user_credentials.py \ -c PATH_TO_CREDENTIALS_JSONเมื่อเสร็จแล้ว โทเค็นการรีเฟรชจะพิมพ์ลงในคอนโซล คัดลอกและบันทึกไว้ สำหรับขั้นตอนถัดไป
กำหนดค่าไลบรารีโดยเพิ่มการตั้งค่าต่อไปนี้ลงในการกำหนดค่าที่คุณเลือก
เพิ่มการกำหนดค่าต่อไปนี้ลงในสตริง
google-ads.yamlหรือ YAMLclient_id: INSERT_OAUTH2_CLIENT_ID_HERE client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE refresh_token: INSERT_REFRESH_TOKEN_HEREจากนั้นเรียกใช้เมธอด
load_from_storageหรือload_from_stringดังนี้from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()หากคุณใช้
dictเพื่อกำหนดค่าไลบรารี ให้ใส่คู่คีย์-ค่าต่อไปนี้และเรียกใช้เมธอดload_from_dictfrom google.ads.googleads.client import GoogleAdsClient configuration = { # ... "client_id": INSERT_OAUTH2_CLIENT_ID_HERE, "client_secret": ( INSERT_OAUTH2_CLIENT_SECRET_HERE ), "refresh_token": INSERT_REFRESH_TOKEN_HERE, # ... } client = GoogleAdsClient.load_from_dict(configuration)หากคุณใช้ตัวแปรสภาพแวดล้อม ให้เพิ่มรายการต่อไปนี้ลงในการกำหนดค่าหรือสภาพแวดล้อม
bashexport GOOGLE_ADS_CLIENT_ID=\ INSERT_OAUTH2_CLIENT_ID_HERE export GOOGLE_ADS_CLIENT_SECRET=\ INSERT_OAUTH2_CLIENT_SECRET_HERE export GOOGLE_ADS_REFRESH_TOKEN=\ INSERT_REFRESH_TOKEN_HEREจากนั้นเรียกใช้เมธอด
load_from_envดังนี้from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
ดูข้อมูลเพิ่มเติมได้ที่คู่มือเวิร์กโฟลว์การตรวจสอบสิทธิ์ผู้ใช้รายเดียว
ขั้นตอนการตรวจสอบสิทธิ์ผู้ใช้หลายคนหนึ่งเครื่อง
เราขอแนะนำให้ใช้เวิร์กโฟลว์นี้หากแอปของคุณอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้และให้สิทธิ์แอปจัดการบัญชี Google Ads ในนามของผู้ใช้ แอปของคุณจะสร้างและจัดการข้อมูลเข้าสู่ระบบของผู้ใช้ OAuth 2.0 คุณสามารถเริ่มต้นไลบรารีโดยใช้ข้อมูลเข้าสู่ระบบของผู้ใช้ดังต่อไปนี้ ซึ่งถือว่าแอปพลิเคชันของคุณได้รับข้อมูลเข้าสู่ระบบที่รันไทม์ ไม่ว่าจะโดยการเรียกใช้ขั้นตอนการให้สิทธิ์หรือโดยการโหลดจากที่เก็บข้อมูล
dict เป็นกลไกการกำหนดค่าที่ง่ายที่สุดในการใช้เมื่อรับข้อมูลเข้าสู่ระบบที่รันไทม์
from google.ads.googleads.client import GoogleAdsClient
configuration = {
# ...
"client_id": client_id,
"client_secret": client_secret,
"refresh_token": refresh_token,
# ...
}
client = GoogleAdsClient.load_from_dict(configuration)
ดูข้อมูลเพิ่มเติมได้ที่คู่มือเวิร์กโฟลว์การตรวจสอบสิทธิ์แบบหลายคนหนึ่งเครื่อง
การตรวจสอบสิทธิ์ด้วยตนเอง
คุณสามารถสร้างข้อมูลเข้าสู่ระบบการให้สิทธิ์ด้วยวิธีใดก็ได้ แล้วส่งข้อมูลเข้าสู่ระบบดังกล่าวให้ GoogleAdsClient ด้วยตนเองโดยสร้างอินสแตนซ์คลาสไคลเอ็นต์โดยตรง สมมติว่าออบเจ็กต์ข้อมูลเข้าสู่ระบบที่คุณสร้างเป็นอินสแตนซ์ของ google.auth.credentials.Credentials คุณสามารถส่งออบเจ็กต์ดังกล่าวได้ดังนี้
from google.ads.googleads.client import GoogleAdsClient
from google.auth import default
# This line retrieves ADCs from the environment. You can use any authentication
# approach as long as the `credentials` variable is an instance of
# `google.auth.credentials.Credentials`.
credentials, _ = default(scopes=["https://www.googleapis.com/auth/adwords"])
client = GoogleAdsClient(
credentials=credentials,
use_proto_plus=True,
)
จัดการบัญชีหลายบัญชี
เป็นเรื่องปกติที่ผู้ใช้จะจัดการบัญชี Google Ads มากกว่า 1 บัญชี ไม่ว่าจะผ่านการเข้าถึงบัญชีโดยตรงหรือผ่านบัญชีดูแลจัดการ Google Ads ไลบรารีของไคลเอ็นต์ Python มีตัวอย่างโค้ดต่อไปนี้ที่แสดงวิธีจัดการกรณีดังกล่าว
- ตัวอย่างโค้ด
get_account_hierarchyแสดงวิธีดึงข้อมูลรายการบัญชีทั้งหมดภายใต้บัญชีดูแลจัดการ Google Ads - ตัวอย่างโค้ด
list_accessible_customersแสดงวิธีดึงข้อมูลรายการบัญชีทั้งหมดที่ผู้ใช้มีสิทธิ์เข้าถึงโดยตรง จากนั้นจะใช้บัญชีเหล่านี้เป็นค่าที่ถูกต้องสำหรับการตั้งค่าlogin_customer_idได้