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

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

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

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

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

العيوب

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

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

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

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

  2. أنشئ معرّف عميل ورمزًا سريًا للعميل باتّباع التعليمات. بعد إنشاء عميل OAuth 2.0، نزِّل ملف JSON الخاص بالعميل من خلال النقر أولاً على رمز تنزيل عميل OAuth، ثم على الزر "تنزيل 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. تأكَّد من تسجيل الدخول بصفتك المستخدم الذي اخترته في الخطوات السابقة. إذا كان تطبيقك غير معتمَد، قد تظهر لك شاشة تحذير. في هذه الحالات، يمكنك النقر على الرابط عرض الإعدادات المتقدّمة ثم على الخيار الانتقال إلى PROJECT_NAME (غير مصادق عليه).

  7. بعد التحقّق من النطاقات، انقر على الزر متابعة لمنح الإذن. ينتقِل المتصفّح إلى 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"
    }
    

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

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

Java

اضبط المفاتيح التالية في ملف 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/v21/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"
}