گردش کار احراز هویت تک کاربر

مشابه گردش کار حساب کاربری سرویس ، گردش کار احراز هویت تک کاربره از ویژگی‌های مجوزدهی و مدیریت کاربر ارائه شده توسط رابط کاربری گوگل ادز برای اعطای دسترسی به برنامه به تمام حساب‌های لازم استفاده می‌کند. این گردش کار احراز هویت دو مرحله دارد:

  • شما به یک کاربر واحد اجازه دسترسی به تمام حساب‌های گوگل ادز که باید توسط برنامه مدیریت شوند را می‌دهید.
  • کاربر به برنامه شما اجازه می‌دهد تا حساب‌های گوگل ادز خود را از طرف او مدیریت کند، بنابراین به برنامه اجازه دسترسی به تمام حساب‌های گوگل ادز را می‌دهد.

از آنجایی که فقط یک کاربر درگیر است، می‌توانید به جای ساختن جریان احراز هویت کاربر OAuth 2.0 خودتان، به ابزارهایی مانند gcloud CLI یا مثال کد GenerateUserCredential تکیه کنید.

یک مورد استفاده مرتبط برای این گردش کار زمانی است که حساب‌های شما از طریق تعداد انگشت‌شماری از ورودهای کاربری (مثلاً ۳-۴ کاربر) قابل دسترسی باشند، بنابراین تلاش برای توسعه برای ساخت یک گردش کار احراز هویت کاربر OAuth تمام‌عیار در مقایسه با تلاش برای اخذ مجوز برای ۳-۴ کاربر با استفاده از یک ابزار خط فرمان مانند gcloud CLI توجیه‌پذیر نیست.

معایب

این جریان در مقایسه با گردش کار حساب سرویس، چند معایب دارد:

  1. گردش کار احراز هویت کاربر مستلزم ایجاد یک شناسه و رمز کلاینت OAuth 2.0 در کنسول Google Cloud است که به مراحل پیکربندی بیشتری نسبت به ایجاد یک حساب کاربری و کلید سرویس نیاز دارد.
  2. ممکن است برنامه شما مجبور شود یک فرآیند تأیید برنامه Google Cloud اضافی را طی کند.
  3. اگر کاربر مجاز، تیم یا شرکت را ترک کند، در صورت حذف کاربر از حساب‌های کاربری یا غیرفعال کردن حساب کاربری، ممکن است برنامه شما از کار بیفتد. حساب‌های کاربری سرویس به کاربران منفرد وابسته نیستند، بنابراین از این خطر جلوگیری می‌شود.
  4. کاربری که حساب گوگل ادز خود را تأیید می‌کند، باید اقدامات احتیاطی بیشتری مانند فعال کردن احراز هویت دو مرحله‌ای را برای جلوگیری از هک شدن حساب گوگل خود به دلیل امنیت ضعیف، بدافزار یا فیشینگ انجام دهد. حساب‌های کاربری خدماتی در برابر این مشکل کمتر آسیب‌پذیر هستند زیرا برخی از این روش‌های حمله مستقیماً روی آنها اعمال نمی‌شود.

ایجاد اعتبارنامه

  1. برای پیکربندی صفحه رضایت OAuth برای برنامه خود و اضافه کردن https://www.googleapis.com/auth/adwords به عنوان محدوده OAuth 2.0، دستورالعمل‌ها را دنبال کنید.

  2. با دنبال کردن دستورالعمل‌ها، یک شناسه کلاینت و یک رمز کلاینت ایجاد کنید. پس از ایجاد کلاینت OAuth 2.0، فایل JSON کلاینت را ابتدا با کلیک روی آیکون دانلود کلاینت OAuth و سپس دکمه دانلود JSON در صفحه بعد دانلود کنید. فایل را با نام credentials.json ذخیره کنید.

  3. یک حساب کاربری را شناسایی کنید که به تمام حساب‌های گوگل ادز که می‌خواهید با استفاده از برنامه خود مدیریت کنید، دسترسی داشته باشد. اگر حساب‌هایی وجود دارند که دسترسی ندارند، دستورالعمل‌ها را برای اعطای دسترسی لازم دنبال کنید.

  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
    gsutil 5.30
  5. با اجرای ابزار gcloud CLI، یک توکن به‌روزرسانی OAuth 2.0 ایجاد کنید:

    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>

    فایل credentials.json مربوط به مرحله قبل است.

  6. دستور gcloud یک پنجره ورود به حساب گوگل را در یک پنجره مرورگر جدید باز می‌کند و شما را به مراحل احراز هویت OAuth 2.0 می‌برد. مطمئن شوید که با نام کاربری که در مراحل قبلی انتخاب کرده‌اید، وارد سیستم می‌شوید. اگر برنامه شما تأیید نشده باشد، ممکن است یک صفحه هشدار مشاهده کنید. در چنین مواردی، می‌توانید با خیال راحت روی پیوند Show Advanced کلیک کرده و گزینه Go to PROJECT_NAME (unverified) را انتخاب کنید.

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

پیکربندی کتابخانه کلاینت

برای دستورالعمل‌های مربوط به نحوه پیکربندی کتابخانه کلاینت، برگه مربوط به زبان برنامه‌نویسی خود را انتخاب کنید.

جاوا

کلیدهای زیر را در فایل ads.properties خود پیکربندی کنید.

api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

برای گزینه‌های بیشتر، به راهنمای پیکربندی مراجعه کنید.

دات نت

شما می‌توانید نمونه GoogleAdsClient خود را در زمان اجرا، با استفاده از اعتبارنامه‌هایی که از کاربری که حساب‌هایش را فراخوانی‌های API می‌کنید، دریافت کرده‌اید، مقداردهی اولیه کنید.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN",
    ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

برای گزینه‌های بیشتر، به راهنمای پیکربندی مراجعه کنید.

پایتون

کلیدهای زیر را در فایل google-ads.yaml خود پیکربندی کنید.

client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE

برای گزینه‌های بیشتر، به راهنمای پیکربندی مراجعه کنید.

پی اچ پی

کلیدهای زیر را در 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"

برای گزینه‌های بیشتر، به راهنمای پیکربندی مراجعه کنید.

روبی

کلیدهای زیر را در فایل google_ads_config.rb خود پیکربندی کنید.

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

برای گزینه‌های بیشتر، به راهنمای پیکربندی مراجعه کنید.

پرل

کلیدهای زیر را در فایل 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
 

برای گزینه‌های بیشتر، به راهنمای پیکربندی مراجعه کنید.

حلقه زدن

با استفاده از یک کلاینت 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

اکنون می‌توانید از توکن دسترسی در فراخوانی‌های API خود استفاده کنید. مثال زیر نحوه اجرای گزارش کمپین را با استفاده از متد GoogleAdsService.SearchStream برای بازیابی کمپین‌های موجود در حساب شما نشان می‌دهد. این راهنما جزئیات گزارش‌دهی را پوشش نمی‌دهد.

curl -i -X POST https://googleads.googleapis.com/v22/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"
}