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

في سير عمل مصادقة تعدد المستخدمين، يمكنك إنشاء مسار OAuth الخاص بك لمصادقة المستخدمين. تتوفّر أنواع تطبيقات متعدّدة تمت مناقشتها كجزء من مستندات "هوية Google"، وإعدادات مشروع Google Cloud Console التي تحتاج إليها لدعم نوع التطبيق هذا. تتوافق واجهة Google Ads API مع جميع أنواع التطبيقات هذه. في ما يلي التفاصيل الفنية الإضافية التي يجب أخذها في الاعتبار:

  1. للوصول إلى Google Ads API، عليك ضبط تطبيقك للمصادقة على النطاق التالي:

    https://www.googleapis.com/auth/adwords
    
  2. قد يحتاج تطبيقك إلى إجراء طلبات إلى واجهة برمجة التطبيقات نيابةً عن المستخدم أثناء عدم اتصاله بالإنترنت. السيناريو الشائع هو تنزيل مقاييس الحساب بلا إنترنت لإنشاء التقارير وإجراء إحصاءات الحساب. لهذا السبب، ننصحك بطلب [الوصول إلى OAuth بلا إنترنت][oauth-offline-access].

  3. عليك اتّباع [عملية التحقّق من تطبيق OAuth][app-verification] والحصول على شهادة اعتماد لتطبيقك.

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

بعد منح الإذن للمستخدم والحصول على بيانات اعتماد OAuth 2.0، يمكنك ضبط مكتبة البرامج باتّباع التعليمات في علامة التبويب التي تتوافق مع لغة البرمجة التي تستخدمها.

جافا

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

UserCredentials credentials =
    UserCredentials.newBuilder()
        .setClientId(OAUTH_CLIENT_ID)
        .setClientSecret(OAUTH_CLIENT_SECRET)
        .setRefreshToken(REFRESH_TOKEN)
        .build();

// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
    GoogleAdsClient.newBuilder()
        // Sets the developer token which enables API access.
        .setDeveloperToken(DEVELOPER_TOKEN)
        // Sets the OAuth credentials which provide Google Ads account access.
        .setCredentials(credentials)
        // Optional: sets the login customer ID.
        .setLoginCustomerId(Long.valueOf(LOGIN_CUSTOMER_ID))
        .build();
``` See the [configuration guide][java-config-guide] for additional options.

NET.

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

GoogleAdsConfig googleAdsConfig = new GoogleAdsConfig()
{
    DeveloperToken = DEVELOPER_TOKEN,
    LoginCustomerId = LOGIN_CUSTOMER_ID,
    OAuth2ClientId = OAUTH_CLIENT_ID,
    OAuth2ClientSecret = OAUTH_CLIENT_SECRET,
    OAuth2RefreshToken = REFRESH_TOKEN,
};

GoogleAdsClient googleAdsClient = new GoogleAdsClient(googleAdsConfig);

راجِع [دليل الإعداد][dotnet-config-guide] للاطّلاع على خيارات إضافية.

Python

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

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "developer_token": "INSERT_DEVELOPER_TOKEN_HERE",
    "login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "refresh_token": "REFRESH_TOKEN",
    "client_id": "OAUTH_CLIENT_ID",
    "client_secret": "OAUTH_CLIENT_SECRET"}

client = GoogleAdsClient.load_from_dict(credentials)

راجِع [دليل الإعداد][python-config-guide] للاطّلاع على خيارات إضافية.

PHP

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

$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId('INSERT_CLIENT_ID_HERE')
->withClientSecret('INSERT_CLIENT_SECRET_HERE')
->withRefreshToken('INSERT_REFRESH_TOKEN_HERE')
->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withDeveloperToken('INSERT_DEVELOPER_TOKEN_HERE')
    ->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
    ->build();

راجِع [دليل الإعداد][php-config-guide] للاطّلاع على خيارات إضافية.

Ruby

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

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

راجِع [دليل الإعداد][ruby-config-guide] للاطّلاع على خيارات إضافية.

Perl

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

my $api_client = Google::Ads::GoogleAds::Client->new({
  developer_token   => "INSERT_DEVELOPER_TOKEN_HERE",
  login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});

my $oauth2_applications_handler = $api_client->get_oauth2_applications_handler();
$oauth2_applications_handler->set_client_id("INSERT_CLIENT_ID");
$oauth2_applications_handler->set_client_secret("INSERT_CLIENT_SECRET");
$oauth2_applications_handler->set_refresh_token("INSERT_REFRESH_TOKEN");

راجِع [دليل الإعداد][perl-config-guide] للاطّلاع على خيارات إضافية.

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"
}

[oauth-offline-access]: /identity/protocols/oauth2/web-server#offline [app-verification]: //support.google.com/cloud/answer/13461325 [dotnet-config-guide]: /google-ads/api/docs/client-libs/dotnet/configuration [java-config-guide]: /google-ads/api/docs/client-libs/java/config-file [python-config-guide]: /google-ads/api/docs/client-libs/python/configuration [php-config-guide]: /google-ads/api/docs/client-libs/php/configuration [ruby-config-guide]: /google-ads/api/docs/client-libs/ruby/configuration [perl-config-guide]: /google-ads/api/docs/client-libs/perl/configuration