مسار عمل المصادقة لمستخدم واحد

على غرار سير عمل حساب الخدمة، يستفيد مسار مصادقة المستخدم الواحد من ميزات التفويض وإدارة المستخدمين التي توفّرها واجهة مستخدم "إعلانات 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. إذا غادر المستخدم المفوَّض الفريق أو الشركة، قد يتوقف تطبيقك عن العمل إذا أزلت المستخدم من حساباتك أو أوقفت حسابه. لا تكون حسابات الخدمة مرتبطة بمستخدمين فرديين، وبالتالي يتم تجنُّب هذا الخطر.
  3. على المستخدم الذي يفوّض حساب "إعلانات Google" تفعيل مفاتيح المرور في حساب Google لحمايته من الاختراق بسبب ضعف الأمان أو البرامج الضارة أو التصيّد الاحتيالي. لا تتطلّب حسابات الخدمة تفعيل مفاتيح المرور، وهي أقل عرضةً لهذه المشكلة لأنّ بعض طرق الهجوم هذه لا تنطبق عليها مباشرةً.

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

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

  2. أنشئ معرّف عميل وسر عميل باتّباع التعليمات. بعد إنشاء عميل OAuth 2.0، نزِّل ملف 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
    
  5. أنشِئ رمزًا مميزًا لإعادة التحميل في OAuth 2.0 من خلال تشغيل أداة سطر أوامر gcloud باستخدام ملف credentials.json من الخطوة السابقة. يجب تمرير --client-id-file لكي يتم إصدار الرمز المميز لإعادة التحميل ضمن مشروعك في "وحدة تحكّم Google API" بدلاً من المشروع التلقائي في 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
  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"
    }
    

إعداد مكتبة العميل

اختَر علامة التبويب التي تتوافق مع لغة البرمجة التي تستخدمها للحصول على تعليمات حول كيفية ضبط مكتبة العميل. إذا كان المستخدم المفوَّض يصل إلى حسابات العملاء من خلال حساب إداري على "إعلانات Google"، اضبط login-customer-id (أو loginCustomerId) على رقم تعريف العميل المكوّن من 10 أرقام لهذا الحساب الإداري بدون واصلات.

جافا

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

api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

يُرجى الاطّلاع على دليل الإعداد لمعرفة الخيارات الإضافية.

NET.

اضبط بيانات اعتماد OAuth 2.0 في مثيل GoogleAdsConfig واستخدِمها لإعداد عنصر GoogleAdsClient.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
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_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True

يُرجى الاطّلاع على دليل الإعداد لمعرفة الخيارات الإضافية.

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_OAUTH2_CLIENT_ID_HERE'
  c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  c.refresh_token = 'INSERT_OAUTH2_REFRESH_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://oauth2.googleapis.com/token

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

curl -i -X POST \
  https://googleads.googleapis.com/v26/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_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"
}