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

Google Ads API ใช้โปรโตคอล OAuth 2.0 ในการตรวจสอบสิทธิ์และการให้สิทธิ์เช่นเดียวกับ Google API อื่นๆ 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 ของคีย์ส่วนตัวในสภาพแวดล้อมในเครื่อง (พร้อมกับ 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)
    
  • หากใช้ตัวแปรสภาพแวดล้อม ให้เพิ่มข้อมูลต่อไปนี้ลงในการกำหนดค่าหรือสภาพแวดล้อม 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 หรือไม่ได้ตั้งค่า และคีย์ข้อมูลเข้าสู่ระบบ OAuth ของผู้ใช้ (client_id, client_secret และ refresh_token) ไม่ได้ตั้งค่าหรือทำเครื่องหมายเป็นความคิดเห็นไว้ ไลบรารีจะให้สิทธิ์โดยอัตโนมัติโดยใช้ขั้นตอนบัญชีบริการ

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

ขั้นตอนการตรวจสอบสิทธิ์ผู้ใช้รายเดียว

คุณอาจใช้เวิร์กโฟลว์นี้หากใช้บัญชีบริการไม่ได้ เวิร์กโฟลว์นี้ต้องมีขั้นตอนการกำหนดค่า 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_application_default_credentials": True,
        # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    

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

    export GOOGLE_ADS_USE_APPLICATION_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 ของผู้ใช้ คุณสามารถเริ่มต้นใช้งานไลบรารีได้โดยใช้ข้อมูลเข้าสู่ระบบของผู้ใช้ดังนี้ ซึ่งจะถือว่าแอปพลิเคชันของคุณได้รับข้อมูลเข้าสู่ระบบในรันไทม์ ไม่ว่าจะโดยการเรียกใช้ขั้นตอนการให้สิทธิ์หรือโดยการโหลดข้อมูลเข้าสู่ระบบจาก Datastore

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 มีตัวอย่างโค้ดต่อไปนี้ที่แสดงวิธีจัดการกรณีดังกล่าว

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