כמו ממשקי Google API אחרים, Google Ads API משתמש בפרוטוקול OAuth 2.0 לאימות ולהרשאה. פרוטוקול OAuth 2.0 מאפשר לאפליקציית הלקוח של Google Ads API לגשת לחשבון Google Ads של המשתמש בלי לטפל בפרטי ההתחברות של המשתמש או לאחסן אותם.
הסבר על מודל הגישה של Google Ads
כדי לעבוד ביעילות עם Google Ads API, חשוב להבין איך פועל מודל הגישה של Google Ads. מדריך למודל הגישה של Google Ads
תהליכי עבודה של OAuth
יש שלושה תהליכי עבודה נפוצים שמשמשים לעבודה עם 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לאחר מכן קוראים ל-method
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) לא מוגדרים או מופיעים כהערה, הספרייה מאשרת אוטומטית את השימוש בתהליך של חשבון השירות.
מידע נוסף מופיע במדריך לתהליך העבודה עם חשבון שירות.
תהליך אימות של משתמש יחיד
אפשר להשתמש בתהליך העבודה הזה אם אתם לא יכולים להשתמש בחשבונות שירות. תהליך העבודה הזה מחייב שני שלבי הגדרה:
נותנים למשתמש אחד גישה לכל החשבונות שרוצים לנהל באמצעות Google Ads API. גישה נפוצה היא לתת למשתמש גישה לחשבון ניהול ב-Google Ads API, ולקשר את כל חשבונות Google Ads לחשבון הניהול הזה.
המשתמש מריץ כלי כמו ה-CLI של gcloud או דוגמת הקוד של
generate_user_credentialsכדי לתת לאפליקציה הרשאה לנהל את כל חשבונות Google Ads שלו בשמו.
כדי להפעיל את הספרייה באמצעות פרטי הכניסה של המשתמש ב-OAuth 2.0:
אם משתמשים בכלי ה-CLI של gcloud (מומלץ)
פועלים לפי ההוראות במאמר בנושא יצירת פרטי כניסה כדי להגדיר Application Default Credentials (ADC) בסביבה המקומית.
מוסיפים את ההגדרה הבאה ל-
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
פועלים לפי השלבים להגדרת פרויקט ב-Console ומורידים את קובץ ה-JSON שכולל את מזהה הלקוח ואת הסוד של הלקוח בפרויקט.
משכפלים את ספריית הלקוח של Python למכונה ועוברים לספרייה שלה:
git clone https://github.com/googleads/google-ads-python.git cd google-ads-pythonמריצים את הדוגמה ומזינים נתיב מוחלט לקובץ ה-JSON שהורדתם בשלב 1:
python examples/authentication/generate_user_credentials.py \ -c PATH_TO_CREDENTIALS_JSONבסיום, אסימון הרענון יודפס במסוף. מעתיקים אותו ושומרים אותו לשלב הבא.
כדי להגדיר את הספרייה, מוסיפים את ההגדרות הבאות להגדרה שבחרתם:
מוסיפים את ההגדרה הבאה ל-
google-ads.yamlאו למחרוזת ה-YAML:client_id: INSERT_OAUTH2_CLIENT_ID_HERE client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE refresh_token: INSERT_REFRESH_TOKEN_HEREלאחר מכן, קוראים ל-method
load_from_storageאוload_from_string:from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()אם אתם משתמשים ב-
dictכדי להגדיר את הספרייה, צריך לכלול את צמדי המפתח/ערך הבאים ולקרוא ל-methodload_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לאחר מכן קוראים ל-method
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 אחד, באמצעות גישה ישירה לחשבונות או דרך חשבון ניהול ב-Google Ads. ספריית הלקוח של Python כוללת את דוגמאות הקוד הבאות שממחישות איך לטפל במקרים כאלה:
- דוגמת הקוד של
get_account_hierarchyמראה איך לאחזר את רשימת כל החשבונות שמשויכים לחשבון ניהול ב-Google Ads. - בדוגמת הקוד ב-
list_accessible_customersמוסבר איך לאחזר את רשימת כל החשבונות שלמשתמש יש גישה ישירה אליהם. אחר כך אפשר להשתמש בחשבונות האלה כערכים תקינים להגדרהlogin_customer_id.