سير عمل مصادقة المستخدم الفردي

على غرار سير عمل حساب الخدمة، يستفيد سير عمل مصادقة مستخدم واحد من ميزات التفويض وإدارة المستخدمين التي توفّرها واجهة مستخدم "إعلانات Google" لمنح التطبيق إذن الوصول إلى جميع الحسابات اللازمة. يتضمّن سير عمل المصادقة هذا خطوتَين:

  • يمكنك منح مستخدم واحد إذن الوصول إلى جميع حسابات "إعلانات Google" التي يجب أن يديرها التطبيق.
  • يمنح المستخدم تطبيقك إذن إدارة حساباته على "إعلانات Google" نيابةً عنه، ما يمنح التطبيق إذن الوصول إلى جميع حسابات "إعلانات Google".

بما أنّه لا يوجد سوى مستخدم واحد، يمكنك الاعتماد على أدوات مثل gcloud CLI أو نموذج الرمز GenerateUserCredential بدلاً من إنشاء سير عمل مصادقة مستخدم OAuth 2.0 خاص بك.

من حالات الاستخدام ذات الصلة بسير العمل هذا عندما يمكن الوصول إلى حساباتك من خلال عدد قليل من عمليات تسجيل دخول المستخدمين (مثل 3 أو 4 مستخدمين)، وبالتالي لا يكون جهد التطوير اللازم لـ إنشاء سير عمل كامل لـ مصادقة مستخدم OAuth غير مبرّر مقارنةً بالجهد اللازم للحصول على إذن الوصول لـ 3 أو 4 مستخدمين باستخدام أداة سطر أوامر مثل gcloud CLI.

العيوب

هناك بعض العيوب في هذا السير العمل مقارنةً بسير عمل حساب الخدمة:

  1. يتطلّب سير عمل مصادقة المستخدم إنشاء معرّف عميل OAuth 2.0 وسر عميل في Google Cloud Console، ما يتطلّب خطوات إعداد أكثر من إنشاء حساب خدمة ومفتاح.
  2. قد يكون على تطبيقك اجتياز عملية إضافية للتحقّق من تطبيق Google Cloud App verification process.
  3. إذا غادر المستخدم المفوّض الفريق أو الشركة، قد يتوقف تطبيقك عن العمل إذا أزلت المستخدم من حساباتك أو أوقفت حساب المستخدم. لا تكون حسابات الخدمة مرتبطة بمستخدمين فرديين، لذا يتم تجنُّب هذا الخطر.
  4. على المستخدم الذي يفوّض حساب "إعلانات Google" اتّخاذ احتياطات إضافية، مثل تفعيل ميزة "المصادقة الثنائية" للحماية من تعرّض حسابه على Google للاختراق بسبب ضعف الأمان أو البرامج الضارة أو التصيّد الاحتيالي. تكون حسابات الخدمة أقل عرضةً لهذه المشكلة لأنّ بعض طرق الهجوم هذه لا تنطبق عليها مباشرةً.

إنشاء بيانات الاعتماد

  1. اتّبِع الـ تعليمات لإعداد شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth لتطبيقك وأضِف https://www.googleapis.com/auth/adwords كنطاق OAuth 2.0. لمعرفة التفاصيل، يُرجى الاطّلاع على مقالة إعداد شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth.

  2. أنشئ معرّف عميل وسر عميل باتّباع الـ تعليمات. بعد إنشاء عميل OAuth 2.0، نزِّل ملف JSON الخاص بالعميل من خلال النقر أولاً على رمز Download OAuth client (تنزيل عميل OAuth)، ثم على الزر DOWNLOAD JSON (تنزيل JSON) في الشاشة التالية. احفظ الملف باسم credentials.json.

  3. حدِّد حساب مستخدم يمكنه الوصول إلى جميع حسابات "إعلانات Google" التي تريد إدارتها باستخدام تطبيقك. إذا كانت هناك حسابات لا يمكن الوصول إليها، عندئذٍ اتّبِع التعليمات لمنح إذن الوصول اللازم.

  4. نزِّل gcloud CLI وثبِّته. بعد التثبيت، تأكَّد من أنّ الأداة تعمل بشكل صحيح عن طريق تنفيذ الأمر gcloud version من سطر الأوامر. قد يبدو الناتج على النحو التالي.

    :~$ gcloud version
    Google Cloud SDK 492.0.0
    alpha 2024.09.06
    beta 2024.09.06
    bq 2.1.8
    bundled-python3-unix 3.11.9
    core 2024.09.06
    enterprise-certificate-proxy 0.3.2
    gcloud-crc32c 1.0.0
    gsutil 5.30
  5. أنشئ رمزًا مميزًا لإعادة تحميل OAuth 2.0 عن طريق تنفيذ أداة gcloud CLI:

    gcloud auth application-default 
    login --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform
    --client-id-file=<path_to_credentials.json>

    ملف credentials.json من الخطوة السابقة.

  6. يفتح الأمر gcloud نافذة تسجيل الدخول إلى حساب Google في نافذة متصفّح جديدة وينقلك خلال خطوات مصادقة OAuth 2.0. تأكَّد من تسجيل الدخول بصفتك المستخدم الذي اخترته من الخطوات السابقة. إذا كان تطبيقك غير محقّق منه، قد تظهر لك شاشة تحذير. في هذه الحالات، يمكنك النقر بأمان على الرابط Show Advanced (عرض الإعدادات المتقدّمة) والنقر على الخيار Go to PROJECT_NAME (unverified) (الانتقال إلى (غير محقّق منه)).

  7. بعد التحقّق من النطاقات، انقر على الزر Continue (متابعة) لمنح الإذن. ينتقل المتصفّح إلى https://cloud.google.com/sdk/auth_success، ما يشير إلى أنّ المصادقة قد نجحت. تعرض الصفحة الرسالة التالية:

    Authorization code granted. Close this tab.

    يطبع الأمر gcloud الرسالة التالية:

    Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]

    افتح الآن ملف application_default_credentials.json. يجب أن يكون محتواه مشابهًا لما يلي:

    {
    "account": "",
    "client_id": "******.apps.googleusercontent.com",
    "client_secret": "******",
    "refresh_token": "******",
    "type": "authorized_user",
    "universe_domain": "googleapis.com"
    }
    

إعداد مكتبة البرامج

اختَر علامة التبويب التي تتوافق مع لغة البرمجة للحصول على تعليمات حول كيفية إعداد مكتبة البرامج.

جافا

اضبط المفاتيح التالية في ملف ads.properties.

api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

راجِع دليل الإعداد لمعرفة الخيارات الإضافية.

NET.

يمكنك تهيئة مثيل GoogleAdsClient في وقت التشغيل، باستخدام بيانات الاعتماد التي حصلت عليها من المستخدم الذي تجري طلبات واجهة برمجة التطبيقات إلى حساباته.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN",
    ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

راجِع دليل الإعداد لمعرفة الخيارات الإضافية.

Python

اضبط المفاتيح التالية في ملف google-ads.yaml.

client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE

راجِع دليل الإعداد لمعرفة الخيارات الإضافية.

PHP

اضبط المفاتيح التالية في ملف google_ads_php.ini.

[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"

[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"

راجِع دليل الإعداد لمعرفة الخيارات الإضافية.

Ruby

اضبط المفاتيح التالية في ملف google_ads_config.rb.

  Google::Ads::GoogleAds::Config.new do |c|
     c.client_id = 'INSERT_CLIENT_ID_HERE'
     c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
     c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
     c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
     c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
  end

راجِع دليل الإعداد لمعرفة الخيارات الإضافية.

Perl

اضبط المفاتيح التالية في ملف googleads.properties.

 clientId=INSERT_OAUTH2_CLIENT_ID_HERE
 clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
 refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
 loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
 

راجِع دليل الإعداد لمعرفة الخيارات الإضافية.

curl

ابدأ باستخدام عميل HTTP لجلب رمز مميز للوصول إلى OAuth 2.0. يستخدم هذا الدليل الأمر curl.

curl \
  --data "grant_type=refresh_token" \
  --data "client_id=CLIENT_ID" \
  --data "client_secret=CLIENT_SECRET" \
  --data "refresh_token=REFRESH_TOKEN" \
  https://www.googleapis.com/oauth2/v3/token

يمكنك الآن استخدام رمز الوصول المميّز في طلبات واجهة برمجة التطبيقات. يوضّح المثال التالي كيفية تشغيل تقرير حملة باستخدام طريقة GoogleAdsService.SearchStream لاسترداد الحملات في حسابك. لا يغطّي هذا الدليل تفاصيل إعداد التقارير .

curl -i -X POST https://googleads.googleapis.com/v24/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_TOKEN" \
   -H "login-customer-id: LOGIN_CUSTOMER_ID" \
   --data-binary "@query.json"

في ما يلي محتوى ملف query.json:

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}