این راهنما نحوه دسترسی به Google Ads API با حسابهای سرویس را مورد بحث قرار میدهد.
حساب سرویس ، حسابی است که به جای یک کاربر نهایی، به برنامه شما تعلق دارد. حسابهای سرویس از یک جریان OAuth 2.0 استفاده میکنند که نیازی به مجوز انسانی ندارد و در عوض از یک فایل کلیدی استفاده میکنند که فقط برنامه شما میتواند به آن دسترسی داشته باشد.
استفاده از حساب های خدماتی دو مزیت کلیدی دارد:
مجوز برای دسترسی API Google Ads به حسابهای Google Ads به عنوان یک مرحله پیکربندی انجام میشود و از ویژگیهای مجوز و مدیریت حساب ارائه شده توسط رابط کاربری Google Ads استفاده میکند. این امر با عدم نیاز به ایجاد جریان OAuth 2.0 و مقابله با پیچیدگی هایی که شامل تعامل کاربر، ذخیره اعتبار کاربر و غیره است، در تلاش توسعه دهنده صرفه جویی می کند.
مجوز دسترسی به حسابهای Google Ads به اطلاعات کاربری فردی مرتبط نیست، که ممکن است در مواردی مفید باشد که انتظار میرود چنین مجوزی ادامه یابد، حتی اگر کارمندی که در ابتدا اجازه دسترسی را داده، تیم یا شرکت را ترک کند.
راه اندازی دسترسی به حساب
با ایجاد یک حساب سرویس و اعتبارنامه شروع کنید.
کلید حساب سرویس را با فرمت JSON دانلود کنید و شناسه حساب سرویس و ایمیل را یادداشت کنید.
به عنوان سرپرست به حساب Google Ads خود وارد شوید. به Admin > Access and Security بروید.
روی دکمه + در زیر تب کاربران کلیک کنید.
ایمیل حساب سرویس را در کادر ورودی ایمیل تایپ کنید. سطح مناسبی از سطح دسترسی حساب را انتخاب کنید و روی دکمه افزودن حساب کلیک کنید. توجه داشته باشید که سطوح دسترسی ایمیل و مدیریت برای حسابهای سرویس پشتیبانی نمیشوند.
به حساب سرویس دسترسی داده شده است.
پیکربندی کتابخانه مشتری
برگه مربوط به زبان برنامه نویسی خود را برای دستورالعمل های نحوه پیکربندی کتابخانه مشتری خود انتخاب کنید.
جاوا
مسیر JSON کلید خصوصی را در پیکربندی خود تنظیم کنید. اگر از فایل ads.properties
استفاده می کنید، موارد زیر را اضافه کنید:
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
برای جزئیات بیشتر به راهنمای پیکربندی مراجعه کنید.
دات نت
OAuth2Mode
و OAuth2SecretsJsonPath
را در نمونه GoogleAdsConfig
تنظیم کنید و از آن برای مقداردهی اولیه شی GoogleAdsClient
استفاده کنید.
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
OAuth2SecretsJsonPath = "PATH_TO_JSON_SECRETS_PATH",
...
};
GoogleAdsClient client = new GoogleAdsClient(config);
برای جزئیات بیشتر به راهنمای پیکربندی مراجعه کنید.
پایتون
مسیر JSON کلید خصوصی را در پیکربندی خود تنظیم کنید. اگر google-ads.yaml file
، رشته YAML یا dict
استفاده می کنید، موارد زیر را اضافه کنید:
json_key_file_path: JSON_KEY_FILE_PATH
اگر از متغیرهای محیطی استفاده می کنید، موارد زیر را به پیکربندی یا محیط Bash خود اضافه کنید:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
PHP
کلیدهای زیر را در google_ads_php.ini
خود پیکربندی کنید. برای جزئیات بیشتر به راهنمای پیکربندی مراجعه کنید.
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"
روبی
کلیدهای زیر را در google_ads_config.rb
خود پیکربندی کنید.
c.keyfile = 'JSON_KEY_FILE_PATH'
پرل
مسیر JSON کلید خصوصی را تنظیم کنید و شناسه حساب را در پیکربندی خود واگذار کنید. اگر از فایل googleads.properties
استفاده می کنید، موارد زیر را اضافه کنید:
jsonKeyFilePath=JSON_KEY_FILE_PATH
اگر از متغیرهای محیطی استفاده می کنید، موارد زیر را به پیکربندی یا محیط Bash خود اضافه کنید:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
حلقه کردن
با تنظیم حساب سرویس به عنوان اعتبارنامه فعال در gcloud CLI شروع کنید.
gcloud auth login --cred-file=PATH_TO_CREDENTIALS_JSON
سپس، یک نشانه دسترسی OAuth 2.0 برای Google Ads API دریافت کنید.
gcloud auth \
print-access-token \
--scopes='https://www.googleapis.com/auth/adwords'
اکنون می توانید از نشانه دسترسی در تماس های API خود استفاده کنید. مثال زیر نحوه اجرای یک گزارش کمپین را با استفاده از روش 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"
}