مثل واجهات Google APIs الأخرى، تستخدم Google Ads API بروتوكول OAuth 2.0 للمصادقة والتفويض. يتيح بروتوكول OAuth 2.0 لتطبيق عميل واجهة برمجة التطبيقات Google Ads API الوصول إلى حساب "إعلانات Google" الخاص بالمستخدم بدون الحاجة إلى معالجة معلومات تسجيل دخول المستخدم أو تخزينها.
فهم نموذج الوصول إلى "إعلانات Google"
للعمل بفعالية مع Google Ads API، عليك فهم آلية عمل نموذج الوصول إلى "إعلانات Google". راجِع دليل نموذج الوصول إلى "إعلانات Google".
سير عمل OAuth
هناك ثلاثة أنواع شائعة من سير العمل يتم استخدامها عند العمل مع Google Ads API.
مسار حساب الخدمة
هذا هو سير العمل المقترَح إذا كان سير العمل لا يتطلّب أي تفاعل بشري. يتطلّب سير العمل هذا خطوة ضبط، حيث يضيف المستخدم حساب خدمة إلى حسابه على "إعلانات Google". ويمكن للتطبيق بعد ذلك استخدام بيانات اعتماد حساب الخدمة لإدارة حساب المستخدم على "إعلانات Google". يتم ضبط مكتبة 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) غير مضبوطة أو تمّت الإشارة إليها باعتبارها تعليقًا، ستمنح المكتبة الإذن تلقائيًا باستخدام مسار حساب الخدمة.
لمزيد من المعلومات، يُرجى الرجوع إلى دليل سير عمل حساب الخدمة.
عملية مصادقة المستخدم الواحد
يمكن استخدام سير العمل هذا إذا لم تتمكّن من استخدام حسابات الخدمة. يتطلّب سير العمل هذا خطوتَي إعداد:
امنح مستخدمًا واحدًا إذن الوصول إلى جميع الحسابات التي ستتم إدارتها باستخدام Google Ads API. من الطرق الشائعة منح المستخدم إذن الوصول إلى حساب إداري على Google Ads API، وربط جميع حسابات "إعلانات Google" بهذا الحساب الإداري.
يُشغِّل المستخدم أداة مثل gcloud CLI أو مثال الرمز البرمجي
generate_user_credentialsلتفويض تطبيقك لإدارة جميع حساباته على "إعلانات Google" نيابةً عنه.
يمكن إعداد المكتبة باستخدام بيانات اعتماد OAuth 2.0 الخاصة بالمستخدم على النحو التالي:
في حال استخدام أداة gcloud CLI (يُنصح بها)
اتّبِع مستندات إنشاء بيانات الاعتماد لإعداد بيانات الاعتماد التلقائية للتطبيق (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 المميّزة مباشرةً
اتّبِع الخطوات لإعداد مشروع في وحدة التحكّم وتنزيل ملف 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بعد ذلك، استدعِ الطريقة
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" نيابةً عنهم. ينشئ تطبيقك بيانات اعتماد مستخدم 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"، إما من خلال الوصول المباشر إلى الحسابات أو من خلال حساب إداري على "إعلانات Google". توفّر مكتبة برامج Python أمثلة الرموز البرمجية التالية التي توضّح كيفية التعامل مع هذه الحالات:
- يوضّح مثال الرمز البرمجي
get_account_hierarchyكيفية استرداد قائمة بجميع الحسابات ضمن حساب إداري على "إعلانات Google". - يوضّح مثال الرمز البرمجي
list_accessible_customersكيفية استرداد قائمة بجميع الحسابات التي يمكن للمستخدم الوصول إليها مباشرةً. ويمكن بعد ذلك استخدام هذه الحسابات كقيم صالحة لإعدادlogin_customer_id.