پیکربندی

چندین روش مختلف برای پیکربندی مشتری وجود دارد.

پیکربندی با استفاده از فایل YAML

شما می توانید یک فایل YAML را برای استفاده در هنگام تنظیم اولیه مشتری مشخص کنید که حاوی اطلاعات احراز هویت لازم برای درخواست است. این فایل زمانی قابل دسترسی است که یک کلاینت با استفاده از روش load_from_storage مقداردهی اولیه شود. ساده ترین راه برای تولید این فایل این است که نمونه google-ads.yaml از مخزن GitHub کپی کنید و آن را به گونه ای تغییر دهید که اعتبار شما از جمله توکن توسعه دهنده، توکن رفرش، شناسه مشتری و راز مشتری را شامل شود.

برای تعیین مکانی که فایل 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()

اگر هر دو مقدار ارائه شود - یک مسیر به متد ارسال شود و متغیر محیطی بالا وجود داشته باشد - آنگاه کتابخانه مسیر عبور شده به متد را اولویت بندی می کند.

اگر مسیری را ارائه نکنید، کتابخانه در پوشه $HOME شما برای فایل جستجو می کند:

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 : فرهنگ لغت‌هایی که انواع مختلف لاگرها را تعریف می‌کنند، که شامل یک کنترل‌کننده و یک سطح گزارش می‌شود.