যাচাইকরণ ও অনুমোদন

অন্যান্য Google API-এর মতো, Google Ads API যাচাইকরণ ও অনুমোদনের জন্য OAuth 2.0 প্রোটোকল ব্যবহার করে। OAuth 2.0 আপনার Google Ads API ক্লায়েন্ট অ্যাপ্লিকেশনকে ব্যবহারকারীর লগ-ইন তথ্য হ্যান্ডেল বা স্টোর না করেই ব্যবহারকারীর Google Ads অ্যাকাউন্ট অ্যাক্সেস করার অনুমতি দেয়।

Google Ads অ্যাক্সেস মডেল সম্পর্কে জানুন

Google Ads API-এর সাথে কার্যকরভাবে কাজ করতে, Google Ads অ্যাক্সেস মডেল কীভাবে কাজ করে তা বুঝুন। Google Ads অ্যাক্সেস মডেল গাইড দেখুন।

OAuth ওয়ার্কফ্লো

Google Ads API-এর সাথে কাজ করার সময় তিনটি সাধারণ ওয়ার্কফ্লো ব্যবহার করা হয়।

সার্ভিস অ্যাকাউন্ট ফ্লো

আপনার ওয়ার্কফ্লোতে কোনও হিউম্যান ইন্টার‍্যাকশনের প্রয়োজন না হলে, এই ওয়ার্কফ্লো সাজেস্ট করা হয়। এই ওয়ার্কফ্লোতে একটি কনফিগারেশন ধাপ প্রয়োজন, যেখানে ব্যবহারকারী তার Google Ads অ্যাকাউন্টে একটি পরিষেবা অ্যাকাউন্ট যোগ করেন। অ্যাপটি তখন ব্যবহারকারীর Google Ads অ্যাকাউন্ট ম্যানেজ করার জন্য পরিষেবা অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করতে পারে। Python লাইব্রেরি এইভাবে কনফিগার করা হয়:

  • google-ads.yaml ফাইল বা YAML স্ট্রিং ব্যবহার করলে, আপনার লোকাল এনভায়রনমেন্টে প্রাইভেট কী JSON ফাইলের পাথ সেট করতে, আপনার কনফিগারেশনে নিম্নলিখিতগুলি যোগ করুন (ডোমেন-ওয়াইড ডেলিগেশন ব্যবহার করলে ঐচ্ছিক impersonated_email সহ):

    json_key_file_path: JSON_KEY_FILE_PATH
    # Optional: only set if using Google Workspace domain-wide delegation:
    # impersonated_email: IMPERSONATED_EMAIL
    

    তারপর load_from_storage বা load_from_string মেথড কল করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    client = GoogleAdsClient.load_from_storage()
    
  • আপনি লাইব্রেরি কনফিগার করার জন্য dict ব্যবহার করলে, নিম্নলিখিত কী-ভ্যালু পেয়ার অন্তর্ভুক্ত করুন এবং load_from_dict পদ্ধতি কল করুন, কনফিগারেশন dict-এ পাস করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    configuration = {
        # ...
        "json_key_file_path": JSON_KEY_FILE_PATH,
        # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    
  • আপনি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করলে, আপনার bash কনফিগারেশন বা এনভায়রনমেন্টে নিম্নলিখিতগুলি যোগ করুন:

    export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
    

    তারপর load_from_env মেথড কল করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    client = GoogleAdsClient.load_from_env()
    

json_key_file_path কনফিগারেশন বিকল্প এইসব কনফিগারেশন পদ্ধতির কোনও একটিতে থাকলে, use_application_default_credentials বিকল্প False বা সেট না করা থাকলে এবং OAuth ব্যবহারকারীর ক্রেডেনশিয়াল কী (client_id, client_secret এবং refresh_token) সেট না করা থাকলে বা কমেন্ট হিসেবে চিহ্নিত করা থাকলে, লাইব্রেরি অটোমেটিক পরিষেবা অ্যাকাউন্ট ফ্লো ব্যবহার করে অনুমোদন করে।

আরও জানতে পরিষেবা অ্যাকাউন্ট ওয়ার্কফ্লো নির্দেশিকা দেখুন।

সিঙ্গেল-ইউজার যাচাইকরণ ফ্লো

আপনি পরিষেবা অ্যাকাউন্ট ব্যবহার করতে না পারলে এই ওয়ার্কফ্লো ব্যবহার করা যেতে পারে। এই ওয়ার্কফ্লোতে দুটি কনফিগারেশন ধাপ রয়েছে:

  1. Google Ads API ব্যবহার করে ম্যানেজ করা হবে এমন সব অ্যাকাউন্টে একজন ব্যবহারকারীকে অ্যাক্সেস দিন। সাধারণত, ব্যবহারকারীকে Google Ads API ম্যানেজার অ্যাকাউন্টের অ্যাক্সেস দেওয়া হয় এবং সেই ম্যানেজার অ্যাকাউন্টের অধীনে থাকা সব Google Ads অ্যাকাউন্ট লিঙ্ক করা হয়।

  2. ব্যবহারকারী gcloud CLI বা generate_user_credentials কোডের উদাহরণের মতো টুল চালান যাতে আপনার অ্যাপ তার হয়ে তার সব Google Ads অ্যাকাউন্ট ম্যানেজ করার অনুমতি পায়।

ব্যবহারকারীর OAuth 2.0 ক্রেডেনশিয়াল ব্যবহার করে লাইব্রেরি শুরু করা যেতে পারে, যেমন:

gcloud CLI টুল ব্যবহার করলে (সাজেস্ট করা হয়)

  1. আপনার লোকাল এনভায়রনমেন্টে অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC) সেট-আপ করতে ক্রেডেনশিয়াল জেনারেট করুন ডকুমেন্টেশন ফলো করুন।

  2. আপনার google-ads.yaml বা YAML স্ট্রিংয়ে নিম্নলিখিত কনফিগারেশন যোগ করুন:

    use_application_default_credentials: true
    

    তারপর load_from_storage বা load_from_string মেথড কল করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    client = GoogleAdsClient.load_from_storage()
    

    আপনি লাইব্রেরি কনফিগার করার জন্য dict ব্যবহার করলে, নিম্নলিখিত কী-ভ্যালু পেয়ার যোগ করুন এবং load_from_dict মেথড কল করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    configuration = {
        # ...
        "use_application_default_credentials": True,
        # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    

    আপনি এনভায়রনমেন্ট ভেরিয়েবেল ব্যবহার করলে, আপনার bash কনফিগারেশন বা এনভায়রনমেন্টে নিম্নলিখিতগুলি যোগ করুন:

    export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS=true
    

    তারপর load_from_env মেথড কল করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    client = GoogleAdsClient.load_from_env()
    

সরাসরি OAuth টোকেন ম্যানেজ করলে

  1. কনসোল প্রোজেক্ট সেট-আপ করতে এবং আপনার প্রোজেক্টের ক্লায়েন্ট আইডি ও ক্লায়েন্ট সিক্রেট সহ JSON ফাইল ডাউনলোড করতে এইসব ধাপ অনুসরণ করুন।

  2. আপনার মেশিনে Python ক্লায়েন্ট লাইব্রেরি ক্লোন করুন এবং এর ডিরেক্টরিতে পরিবর্তন করুন:

    git clone https://github.com/googleads/google-ads-python.git
    cd google-ads-python
    
  3. ১ম ধাপে ডাউনলোড করা JSON ফাইলের অ্যাবসলিউট পাথ প্রদান করে উদাহরণটি এক্সিকিউট করুন:

    python examples/authentication/generate_user_credentials.py \
        -c PATH_TO_CREDENTIALS_JSON
    

    সম্পূর্ণ হয়ে গেলে, আপনার কনসোলে একটি রিফ্রেশ টোকেন প্রিন্ট করা হয়। এটি কপি করে পরবর্তী ধাপের জন্য সেভ করুন।

  4. আপনার পছন্দের কনফিগারেশনে নিম্নলিখিত সেটিংস যোগ করে লাইব্রেরি কনফিগার করুন:

    আপনার google-ads.yaml বা YAML স্ট্রিংয়ে নিম্নলিখিত কনফিগারেশন যোগ করুন:

    client_id: INSERT_OAUTH2_CLIENT_ID_HERE
    client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
    refresh_token: INSERT_REFRESH_TOKEN_HERE
    

    তারপর load_from_storage বা load_from_string মেথড কল করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    client = GoogleAdsClient.load_from_storage()
    

    আপনি লাইব্রেরি কনফিগার করার জন্য dict ব্যবহার করলে, নিম্নলিখিত কী-ভ্যালু পেয়ার অন্তর্ভুক্ত করুন এবং load_from_dict পদ্ধতি কল করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    configuration = {
        # ...
        "client_id": INSERT_OAUTH2_CLIENT_ID_HERE,
        "client_secret": (
            INSERT_OAUTH2_CLIENT_SECRET_HERE
        ),
        "refresh_token": INSERT_REFRESH_TOKEN_HERE,
        # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    

    আপনি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করলে, আপনার bash কনফিগারেশন বা এনভায়রনমেন্টে নিম্নলিখিতগুলি যোগ করুন:

    export GOOGLE_ADS_CLIENT_ID=\
    INSERT_OAUTH2_CLIENT_ID_HERE
    export GOOGLE_ADS_CLIENT_SECRET=\
    INSERT_OAUTH2_CLIENT_SECRET_HERE
    export GOOGLE_ADS_REFRESH_TOKEN=\
    INSERT_REFRESH_TOKEN_HERE
    

    তারপর load_from_env মেথড কল করুন:

    from google.ads.googleads.client import GoogleAdsClient
    
    client = GoogleAdsClient.load_from_env()
    

আরও জানতে সিঙ্গেল-ইউজার যাচাইকরণ ওয়ার্কফ্লো গাইড দেখুন।

একাধিক ব্যবহারকারীর যাচাইকরণ ফ্লো

আপনার অ্যাপ ব্যবহারকারীদের সাইন-ইন করার অনুমতি দিলে এবং তাদের পক্ষ থেকে তাদের Google Ads অ্যাকাউন্ট ম্যানেজ করার জন্য আপনার অ্যাপকে অনুমোদন দিলে এটিই হল সাজেস্ট করা ওয়ার্কফ্লো। আপনার অ্যাপ OAuth 2.0 ব্যবহারকারীর ক্রেডেনশিয়াল তৈরি ও ম্যানেজ করে। ব্যবহারকারীর ক্রেডেনশিয়াল ব্যবহার করে লাইব্রেরি নিচের মতো করে ইনিশিয়ালাইজ করা যেতে পারে। এটি ধরে নেয় যে আপনার অ্যাপ্লিকেশন রানটাইমে ক্রেডেনশিয়াল পায়, এটি কোনও অনুমোদন ফ্লো এক্সিকিউট করে অথবা কোনও ডেটা স্টোর থেকে সেগুলি লোড করে:

রানটাইমে ক্রেডেনশিয়াল পাওয়ার সময় ব্যবহার করার জন্য dict হল সবচেয়ে সহজ কনফিগারেশন মেকানিজম:

from google.ads.googleads.client import GoogleAdsClient

configuration = {
    # ...
    "client_id": client_id,
    "client_secret": client_secret,
    "refresh_token": refresh_token,
    # ...
}

client = GoogleAdsClient.load_from_dict(configuration)

আরও জানতে মাল্টি-ইউজার যাচাইকরণ ওয়ার্কফ্লো গাইড দেখুন।

ম্যানুয়াল যাচাইকরণ

আপনি যেকোনও উপায়ে অথেন্টিকেশন ক্রেডেনশিয়াল তৈরি করতে পারেন এবং ক্লায়েন্ট ক্লাস সরাসরি ইনস্ট্যান্টিয়েট করে GoogleAdsClient-কে ম্যানুয়ালি তা প্রদান করতে পারেন। আপনার তৈরি করা ক্রেডেনশিয়াল অবজেক্ট google.auth.credentials.Credentials-এর ইনস্ট্যান্স হলে, আপনি এটি এইভাবে পাস করতে পারেন:

from google.ads.googleads.client import GoogleAdsClient
from google.auth import default

# This line retrieves ADCs from the environment. You can use any authentication
# approach as long as the `credentials` variable is an instance of
# `google.auth.credentials.Credentials`.
credentials, _ = default(scopes=["https://www.googleapis.com/auth/adwords"])

client = GoogleAdsClient(
    credentials=credentials,
    use_proto_plus=True,
)

একাধিক অ্যাকাউন্ট ম্যানেজ করা

একজন ব্যবহারকারীর পক্ষে একাধিক Google Ads অ্যাকাউন্ট ম্যানেজ করা সাধারণ ব্যাপার, হয় অ্যাকাউন্টে সরাসরি অ্যাক্সেসের মাধ্যমে, অথবা Google Ads ম্যানেজার অ্যাকাউন্টের মাধ্যমে। Python ক্লায়েন্ট লাইব্রেরি নিম্নলিখিত কোডের উদাহরণ প্রদান করে যা থেকে বোঝা যায় যে কীভাবে এই ধরনের পরিস্থিতি সামলাতে হয়:

  1. get_account_hierarchy কোডের উদাহরণ থেকে জানা যায় যে কীভাবে Google Ads ম্যানেজার অ্যাকাউন্টের অধীনে থাকা সব অ্যাকাউন্টের তালিকা পাওয়া যায়।
  2. list_accessible_customers কোডের উদাহরণে দেখানো হয়েছে যে কীভাবে কোনও ব্যবহারকারীর সরাসরি অ্যাক্সেস আছে এমন সব অ্যাকাউন্টের তালিকা পাওয়া যায়। এইসব অ্যাকাউন্টকে তখন login_customer_id সেটিংয়ের জন্য সঠিক ভ্যালু হিসেবে ব্যবহার করা যেতে পারে।