การตรวจสอบสิทธิ์และการให้สิทธิ์

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

เวิร์กโฟลว์ทั่วไป 3 รายการที่ใช้เมื่อทำงานกับ Google Ads API

ขั้นตอนการทำงานของบัญชีบริการ

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

  • หากใช้ไฟล์ google-ads.yaml หรือสตริง YAML ให้เพิ่มข้อมูลต่อไปนี้ลงในการกำหนดค่าเพื่อตั้งค่าเส้นทางไปยังไฟล์ JSON ของคีย์ส่วนตัวในสภาพแวดล้อมในเครื่อง

    json_key_file_path: JSON_KEY_FILE_PATH
    

    จากนั้นเรียกใช้เมธอด 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)
    
  • หากใช้ตัวแปรสภาพแวดล้อม ให้เพิ่มรายการต่อไปนี้ลงในbash การกำหนดค่าหรือสภาพแวดล้อม

    export 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 หรือไม่ได้ตั้งค่า ไลบรารีจะให้สิทธิ์โดยอัตโนมัติโดยใช้ขั้นตอนบัญชีบริการ

ดูข้อมูลเพิ่มเติมได้ที่คู่มือเวิร์กโฟลว์บัญชีบริการ

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

คุณอาจใช้เวิร์กโฟลว์นี้ได้หากใช้บัญชีบริการไม่ได้ เวิร์กโฟลว์นี้ ต้องมีขั้นตอนการกำหนดค่า 2 ขั้นตอนดังนี้

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

  2. ผู้ใช้เรียกใช้เครื่องมือ เช่น gcloud CLI หรือgenerate_user_credentials ตัวอย่างโค้ด เพื่อให้สิทธิ์แอปของคุณในการจัดการบัญชี Google Ads ทั้งหมดในนามของผู้ใช้

คุณเริ่มต้นใช้งานไลบรารีได้โดยใช้ข้อมูลเข้าสู่ระบบ OAuth 2.0 ของผู้ใช้ดังนี้

หากใช้เครื่องมือ gcloud CLI (แนะนำ)

  1. ทำตามเอกสารประกอบสร้างข้อมูลเข้าสู่ระบบเพื่อตั้งค่า ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (ADC) ในสภาพแวดล้อมในเครื่อง

  2. เพิ่มการกำหนดค่าต่อไปนี้ในสตริง google-ads.yaml หรือ YAML

    use_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_dict

    from google.ads.googleads.client import GoogleAdsClient
    
    configuration = {
      # ...
      "use_account_default_credentials": True
      # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    

    หากใช้ตัวแปรสภาพแวดล้อม ให้เพิ่มรายการต่อไปนี้ลงในbash การกำหนดค่าหรือสภาพแวดล้อม

    export GOOGLE_ADS_USE_ACCOUNT_DEFAULT_CREDENTIALS=true
    

    จากนั้นเรียกใช้เมธอด load_from_env ดังนี้

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_env()
    

หากจัดการโทเค็น OAuth โดยตรง

  1. ทําตามขั้นตอนเพื่อตั้งค่าโปรเจ็กต์คอนโซล และดาวน์โหลดไฟล์ JSON ที่มีรหัสไคลเอ็นต์และ รหัสลับไคลเอ็นต์ของโปรเจ็กต์

  2. โคลนไลบรารีของไคลเอ็นต์ Python ไปยังเครื่องของคุณ แล้วเปลี่ยนเป็นไดเรกทอรีของไลบรารีโดยทำดังนี้

    $ git clone https://github.com/googleads/google-ads-python.git
    $ cd google-ads-python
    
  3. เรียกใช้ตัวอย่างโดยระบุเส้นทางแบบเต็มไปยังไฟล์ JSON ที่ดาวน์โหลด ในขั้นตอนที่ 1

    $ python examples/authentication/generate_user_credentials.py -c PATH_TO_CREDENTIALS_JSON
    

    เมื่อดำเนินการเสร็จแล้ว ระบบจะพิมพ์โทเค็นการรีเฟรชไปยังคอนโซล คัดลอกและ บันทึกไว้สำหรับขั้นตอนถัดไป

  4. กำหนดค่าไลบรารีโดยเพิ่มการตั้งค่าต่อไปนี้ลงในการกำหนดค่าที่คุณเลือก

    เพิ่มการกำหนดค่าต่อไปนี้ในสตริง google-ads.yaml หรือ YAML

    client_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_dict

    from 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)
    

    หากใช้ตัวแปรสภาพแวดล้อม ให้เพิ่มรายการต่อไปนี้ลงในbash การกำหนดค่าหรือสภาพแวดล้อม

    export 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,
  # ... insert remaining parameters
)

จะเกิดอะไรขึ้นหากผู้ใช้ของฉันจัดการหลายบัญชี

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

  1. ตัวอย่างโค้ด get_account_hierarchy แสดงวิธี ดึงรายการบัญชีทั้งหมดภายใต้บัญชีดูแลจัดการ Google Ads
  2. ตัวอย่างโค้ด list_accessible_customers แสดงวิธีดึงรายการบัญชีทั้งหมดที่ผู้ใช้มีสิทธิ์เข้าถึงโดยตรง จากนั้นจะใช้บัญชีเหล่านี้เป็นค่าที่ถูกต้องสำหรับ การตั้งค่า login_customer_id ได้