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

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

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

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

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

معایب

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

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

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

  1. یک صفحه رضایت OAuth برای برنامه خود پیکربندی کنید و https://www.googleapis.com/auth/adwords به عنوان محدوده OAuth 2.0 اضافه کنید. برای جزئیات بیشتر به تنظیم صفحه رضایت OAuth خود مراجعه کنید.

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

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

  4. رابط خط فرمان gcloud را دانلود و نصب کنید . پس از نصب، با اجرای دستور 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
    
  5. با اجرای ابزار gcloud CLI به همراه فایل credentials.json از مرحله قبل، یک توکن به‌روزرسانی OAuth 2.0 ایجاد کنید. ارسال --client-id-file الزامی است، بنابراین توکن به‌روزرسانی تحت پروژه Google API Console شما صادر می‌شود، نه پروژه پیش‌فرض gcloud CLI:

    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
  6. دستور gcloud یک پنجره ورود به حساب گوگل را در یک پنجره مرورگر جدید باز می‌کند و شما را به مراحل احراز هویت OAuth 2.0 می‌برد. مطمئن شوید که با نام کاربری که در مراحل قبلی انتخاب کرده‌اید، وارد سیستم می‌شوید. اگر برنامه شما تأیید نشده باشد، ممکن است یک صفحه هشدار مشاهده کنید. در چنین مواردی، می‌توانید با خیال راحت روی پیوند پیشرفته (Advanced) کلیک کنید و گزینه Go to PROJECT_NAME (unsafe) را انتخاب کنید.

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

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

برای دستورالعمل‌های مربوط به نحوه پیکربندی کتابخانه کلاینت، زبانه مربوط به زبان برنامه‌نویسی خود را انتخاب کنید. اگر کاربر مجاز شما از طریق یک حساب مدیریت تبلیغات گوگل (MCC) به حساب‌های کلاینت دسترسی پیدا می‌کند، login-customer-id (یا loginCustomerId ) را روی شناسه مشتری 10 رقمی آن حساب مدیریت بدون خط تیره تنظیم کنید.

جاوا

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

api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE

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

دات نت

اعتبارنامه‌های OAuth 2.0 را روی نمونه GoogleAdsConfig تنظیم کنید و از آن برای مقداردهی اولیه شیء GoogleAdsClient استفاده کنید.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
    OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
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_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True

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

پی اچ پی

کلیدهای زیر را در 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_OAUTH2_CLIENT_ID_HERE'
  c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  c.refresh_token = 'INSERT_OAUTH2_REFRESH_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://oauth2.googleapis.com/token

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

curl -i -X POST \
  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_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"
}