প্রমাণীকরণ এবং অনুমোদন

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

গুগল অ্যাডস অ্যাক্সেস মডেলটি বুঝুন

গুগল অ্যাডস এপিআই (Google Ads API) কার্যকরভাবে ব্যবহার করার জন্য, গুগল অ্যাডস অ্যাক্সেস মডেল কীভাবে কাজ করে তা আপনার বোঝা উচিত। আমরা গুগল অ্যাডস অ্যাক্সেস মডেল গাইডটি পড়ার পরামর্শ দিই।

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

গুগল অ্যাডস এপিআই নিয়ে কাজ করার ক্ষেত্রে সাধারণত তিনটি কর্মপ্রবাহ ব্যবহার করা হয়।

পরিষেবা অ্যাকাউন্ট প্রবাহ

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

  • যদি google-ads.yaml ফাইল বা YAML স্ট্রিং ব্যবহার করেন, তাহলে আপনার স্থানীয় পরিবেশে প্রাইভেট কী JSON ফাইলের পাথ সেট করতে আপনার কনফিগারেশনে নিম্নলিখিতটি যোগ করুন:

    json_key_file_path: JSON_KEY_FILE_PATH
    

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

    from google.ads.googleads.client import GoogleAdsClient
    client = GoogleAdsClient.load_from_storage()
    
  • আপনি যদি লাইব্রেরিটি কনফিগার করার জন্য একটি dict ব্যবহার করেন, তাহলে নিম্নলিখিত কী-ভ্যালু পেয়ারটি অন্তর্ভুক্ত করুন এবং কনফিগারেশন dict পাস করে load_from_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 বা আনসেট থাকে, তাহলে লাইব্রেরিটি সার্ভিস অ্যাকাউন্ট ফ্লো ব্যবহার করে স্বয়ংক্রিয়ভাবে অনুমোদন করবে।

আরও জানতে সার্ভিস অ্যাকাউন্ট ওয়ার্কফ্লো গাইডটি দেখুন।

একক-ব্যবহারকারী প্রমাণীকরণ প্রবাহ

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

  1. গুগল অ্যাডস এপিআই ব্যবহার করে পরিচালনা করা হবে এমন সমস্ত অ্যাকাউন্টে একজন ব্যবহারকারীকে অ্যাক্সেস দিন। একটি প্রচলিত পদ্ধতি হলো ব্যবহারকারীকে একটি গুগল অ্যাডস এপিআই ম্যানেজার অ্যাকাউন্ট দেওয়া এবং সেই ম্যানেজার অ্যাকাউন্টের অধীনে সমস্ত গুগল অ্যাডস অ্যাকাউন্ট লিঙ্ক করা।

  2. ব্যবহারকারী আপনার অ্যাপকে তাদের পক্ষ থেকে সমস্ত গুগল অ্যাডস অ্যাকাউন্ট পরিচালনা করার অনুমোদন দিতে gcloud CLI- এর মতো কোনো টুল অথবা generate_user_credentials কোড উদাহরণটি চালান।

ব্যবহারকারীর 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_account_default_credentials": True
      # ...
    }
    
    client = GoogleAdsClient.load_from_dict(configuration)
    

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

    export GOOGLE_ADS_USE_ACCOUNT_DEFAULT_CREDENTIALS=true
    

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

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

যদি সরাসরি OAuth টোকেনগুলি পরিচালনা করা হয়

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

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

    $ 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()
    

আরও জানতে একক-ব্যবহারকারী প্রমাণীকরণ কর্মপ্রবাহ নির্দেশিকাটি দেখুন।

একাধিক ব্যবহারকারী প্রমাণীকরণ প্রবাহ

আপনার অ্যাপ যদি ব্যবহারকারীদের সাইন ইন করার এবং তাদের পক্ষ থেকে গুগল অ্যাডস অ্যাকাউন্ট পরিচালনা করার জন্য আপনার অ্যাপকে অনুমোদন দেওয়ার সুযোগ দেয়, তবে এটিই প্রস্তাবিত কর্মপ্রবাহ। আপনার অ্যাপ 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,
  # ... insert remaining parameters
)

যদি আমার ব্যবহারকারী একাধিক অ্যাকাউন্ট পরিচালনা করে তাহলে কী হবে?

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

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