چندین روش مختلف برای پیکربندی مشتری وجود دارد.
پیکربندی با استفاده از فایل YAML
شما می توانید یک فایل YAML را برای استفاده در هنگام تنظیم اولیه مشتری مشخص کنید که حاوی اطلاعات احراز هویت لازم برای درخواست است. این فایل زمانی قابل دسترسی است که یک کلاینت با استفاده از روش load_from_storage
مقداردهی اولیه شود. ساده ترین راه برای تولید این فایل این است که نمونه google-ads.yaml
را از مخزن GitHub کپی کنید و آن را به گونه ای تغییر دهید که اعتبار شما از جمله توکن توسعه دهنده، توکن رفرش، شناسه مشتری و راز مشتری را شامل شود.
اگر مسیری را ارائه نکنید، کتابخانه در پوشه $HOME
شما برای فایل جستجو می کند:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
برای تعیین مکانی که فایل google-ads.yaml
در آن قرار دارد، می توانید مسیر را به عنوان رشته ای به متد هنگام فراخوانی ارسال کنید:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage("path/to/google-ads.yaml")
همچنین می توانید مسیر را با تعریف یک متغیر محیطی خاص مشخص کنید:
import os
os.environ["GOOGLE_ADS_CONFIGURATION_FILE_PATH"] = "path/to/google-ads.yaml"
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
اگر هر دو مقدار ارائه شود - یک مسیر به متد ارسال شود و متغیر محیطی بالا وجود داشته باشد - آنگاه کتابخانه مسیر عبور شده به متد را اولویت بندی می کند.
پیکربندی با استفاده از متغیرهای محیطی
شما می توانید تمام تنظیمات مشتری خود را به عنوان متغیرهای محیطی ذخیره کنید، که هنگام استفاده از روش load_from_env
کلاینت خوانده می شود. متغیرهای محیطی باید همان نامی داشته باشند که در فایل google-ads.yaml
تعریف شده است، اما باید همگی بزرگ و با پیشوند فضای نام GOOGLE_ADS_
باشند. برای مثال client_id
باید به عنوان GOOGLE_ADS_CLIENT_ID
ذخیره شود.
متغیرهای محیطی معمولاً در یک فایل پیکربندی bash مانند فایل .bashrc
یا .bash_profile
واقع در پوشه $HOME
تعریف می شوند. آنها همچنین می توانند با استفاده از خط فرمان تعریف شوند. توجه داشته باشید که این دستورالعملها فرض میکنند که از bash
استفاده میکنید، اگر از پوسته دیگری استفاده میکنید، ممکن است لازم باشد اسنادی را در مورد نحوه تنظیم متغیرهای محیطی در پوستهای که استفاده میکنید مشورت کنید.
در اینجا چند مرحله اساسی برای تعریف یک متغیر محیطی با استفاده از فایل .bashrc
با استفاده از ترمینال آورده شده است:
# Append the line "export GOOGLE_ADS_CLIENT_ID=1234567890" to
# the bottom of your .bashrc file.
$ echo "export GOOGLE_ADS_CLIENT_ID=1234567890" >> ~/.bashrc
# Update your bash environment to use the most recently updated
# version of your .bashrc file.
$ src ~/.bashrc
متغیرهای محیطی همچنین می توانند در نمونه ترمینال شما مستقیماً از خط فرمان تنظیم شوند:
$ export GOOGLE_ADS_CLIENT_ID=1234567890
$ echo $GOOGLE_ADS_CLIENT_ID
1234567890
روش load_from_env
داده های پیکربندی را از ویژگی environ
در ماژول os
داخلی پایتون بارگیری می کند. به عنوان مثال: os.environ["GOOGLE_ADS_CLIENT_ID"]
در اینجا مثالی از نحوه مقداردهی اولیه یک نمونه مشتری با پیکربندی از متغیرهای محیطی آورده شده است:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_env()
به منظور پیکربندی logging
از طریق متغیرهای محیطی، مقدار پیکربندی باید یک شی JSON باشد که با ساختار کلیدهای YAML در نمونه فایل پیکربندی google-ads.yaml
مطابقت داشته باشد.
در اینجا مثالی از نحوه تنظیم این مورد با استفاده از یک فایل .bashrc
آمده است:
export GOOGLE_ADS_LOGGING='{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"default_fmt": {
"format": "[%(asctime)s - %(levelname)s] %(message).5000s",
"datefmt": "%Y-%m-%d %H:%M:%S"
}
},
"handlers": {
"default_handler": {
"class": "logging.StreamHandler",
"formatter": "default_fmt"
}
},
"loggers": {
"": {
"handlers": ["default_handler"],
"level": "INFO"
}
}
}'
پیکربندی با استفاده از رشته YAML
اگر یک فایل YAML را در حافظه خواندهاید، میتوانید آن را مستقیماً در هنگام مقداردهی اولیه در اختیار مشتری قرار دهید. برای این کار فقط از متد load_from_string
استفاده کنید.
from google.ads.googleads.client import GoogleAdsClient
with open("/path/to/yaml", "rb") as handle:
yaml = handle.read()
client = GoogleAdsClient.load_from_string(yaml)
پیکربندی با استفاده از dict
می توانید یک dict
مستقیماً به متد load_from_dict
ارسال کنید. به عنوان مثال:
from google.ads.googleads.client import GoogleAdsClient
credentials = {
"developer_token": "abcdef123456",
"refresh_token": "1//0abcdefghijklABCDEF",
"client_id": "123456-abcdef.apps.googleusercontent.com",
"client_secret": "aBcDeFgHiJkL"}
client = GoogleAdsClient.load_from_dict(credentials)
فیلدهای پیکربندی
پیکربندی کتابخانه مشتری از فیلدهای زیر پشتیبانی می کند.
فیلدهای عمومی (این نامها چه از پیکربندی YAML یا dict استفاده کنید یکسان هستند):
-
refresh_token
: نشانه بازخوانی OAuth شما. -
client_id
: شناسه مشتری OAuth شما. -
client_secret
: راز مشتری OAuth شما. -
developer_token
: توکن توسعه دهنده شما برای دسترسی به API. -
login_customer_id
: مستندات login-customer-id را ببینید. -
linked_customer_id
: مستندات پیوندی-customer-id را ببینید. -
json_key_file_path
(قبلاpath_to_private_key_file
): مسیری به فایل کلید خصوصی محلی. این برای احراز هویت با استفاده از حساب سرویس استفاده می شود. به مستندات حساب خدمات OAuth2 مراجعه کنید. -
impersonated_email
(delegate_account
سابق): ایمیل حساب کاربری که به عنوان نماینده استفاده می شود. این برای احراز هویت با استفاده از حساب سرویس استفاده می شود. به مستندات حساب خدمات OAuth2 مراجعه کنید. -
logging
: پیکربندی ورود به سیستم. فیلدهای ورود به سیستم در زیر توضیح داده شده است. -
http_proxy
: به مستندات پروکسی مراجعه کنید. -
use_proto_plus
: اینکه آیا از پیام های proto-plus استفاده شود یا خیر. به مستندات پیام های Protobuf مراجعه کنید.
فیلدهای عمومی به عنوان متغیرهای محیطی:
-
GOOGLE_ADS_CONFIGURATION_FILE_PATH
-
GOOGLE_ADS_REFRESH_TOKEN
-
GOOGLE_ADS_CLIENT_ID
-
GOOGLE_ADS_CLIENT_SECRET
-
GOOGLE_ADS_DEVELOPER_TOKEN
-
GOOGLE_ADS_LOGIN_CUSTOMER_ID
-
GOOGLE_ADS_LINKED_CUSTOMER_ID
-
GOOGLE_ADS_JSON_KEY_FILE_PATH
(قبلاًGOOGLE_ADS_PATH_TO_PRIVATE_KEY_FILE
) -
GOOGLE_ADS_IMPERSONATED_EMAIL
(GOOGLE_ADS_DELEGATE_ACCOUNT
سابق) -
GOOGLE_ADS_LOGGING
-
GOOGLE_ADS_HTTP_PROXY
-
GOOGLE_ADS_USE_PROTO_PLUS
فیلدهای ورود به سیستم، که فیلدهای زیر فیلد پیکربندی logging
هستند، مستقیماً از ماژول داخلی logging.config
مشتق شدهاند، زیرا کتابخانه تمام فیلدهای زیر فضای نام logging
را مستقیماً به روش logging.config.dictConfig
ارسال میکند. برای جزئیات کامل به راهنمای ورود به سیستم مراجعه کنید.
-
version
: یک مقدار صحیح که یک نسخه طرحواره را نشان می دهد. -
disable_existing_loggers
: آیا لاگرهای پیکربندی شده در جای دیگری در برنامه باید غیرفعال شوند یا خیر. -
formatters
: واژهنامههایی که انواع مختلف قالبکنندهها را تعریف میکنند. -
handlers
: دیکشنری هایی که کنترل کننده های مختلف را تعریف می کنند، که کنترل می کنند که لاگ ها در کجا نوشته شوند و کدام فرمت کننده ها باید استفاده شوند. -
loggers
: فرهنگ لغتهایی که انواع مختلف لاگرها را تعریف میکنند، که شامل یک کنترلکننده و یک سطح گزارش میشود.