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

অন্যান্য 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 অ্যাকাউন্ট ম্যানেজ করার জন্য পরিষেবা অ্যাকাউন্টের ক্রেডেনশিয়াল ব্যবহার করতে পারবে। এটি কনফিগার করতে, Google Cloud Console-এ JSON কী ফাইল তৈরি করে ডাউনলোড করুন, তারপর আপনার হোম ডিরেক্টরিতে google_ads_config.rb কপি করুন এবং আপনার পরিষেবা অ্যাকাউন্ট কীফাইলের লোকেশন (এবং Google Workspace ডোমেন-ওয়াইড ডেলিগেশন ব্যবহার করার সময় ছদ্মবেশ ধারণ করার জন্য ব্যবহারকারীর ঐচ্ছিক ইমেল আইডি) নির্দিষ্ট করতে এটি পরিবর্তন করুন:

# You can also authenticate using a service account. If "keyfile" is
# specified below, then service account authentication will be assumed and
# the above authentication fields ignored. Read more about service account
# authentication here:
# https://developers.google.com/google-ads/api/docs/oauth/service-accounts
c.keyfile = 'path/to/keyfile.json'
# Optional unless using Google Workspace domain-wide delegation:
c.impersonate = 'INSERT_EMAIL_ADDRESS_TO_IMPERSONATE_HERE'

আপনি যদি এই তথ্য কোনও ফাইলে সেভ করতে না চান এবং তার পরিবর্তে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করতে চান, তাহলে আপনি GOOGLE_ADS_JSON_KEY_FILE_PATH (এবং ঐচ্ছিক GOOGLE_ADS_IMPERSONATED_EMAIL) সেট করতে পারেন:

export GOOGLE_ADS_JSON_KEY_FILE_PATH="/path/to/your/service-account-key.json"
# Optional unless using Google Workspace domain-wide delegation:
export GOOGLE_ADS_IMPERSONATED_EMAIL="your_email@email.com"

এছাড়াও, রানটাইমে প্রোগ্রাম্যাটিকভাবে আপনি পরিষেবা অ্যাকাউন্টের কীফাইল পাথ (এবং ঐচ্ছিক ছদ্মবেশী ইমেল) পাস করতে পারেন:

require 'google/ads/google_ads'

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.keyfile = '/path/to/your/service-account-key.json'
  # Optional unless using Google Workspace domain-wide delegation:
  config.impersonate = 'INSERT_EMAIL_ADDRESS_TO_IMPERSONATE_HERE'
end

বিকল্প হিসেবে, আপনি googleauth জেম ব্যবহার করে পরিষেবা অ্যাকাউন্ট ক্রেডেনশিয়াল তৈরি করতে এবং credentials.updater_proc-কে config.authentication-এ পাস করতে পারেন:

require 'googleauth'
require 'google/ads/google_ads'

# Path to your service account key file.
key_file = '/path/to/your/service-account-key.json'

# Define the scopes needed for the Google Ads API.
scopes = ['https://www.googleapis.com/auth/adwords']

# Create service account credentials.
credentials = File.open(key_file) do |io|
  Google::Auth::ServiceAccountCredentials.make_creds(
    json_key_io: io,
    scope: scopes
  )
end

# Initialize the Google Ads API client with these credentials.
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  # Inject the service account credential updater proc.
  config.authentication = credentials.updater_proc
end

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

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

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

  1. Google Ads API ব্যবহার করে ম্যানেজ করা হবে এমন সব অ্যাকাউন্টে একজন ব্যবহারকারীকে অ্যাক্সেস দিন। একটি সাধারণ পদ্ধতি হল ব্যবহারকারীকে Google Ads API ম্যানেজার অ্যাকাউন্টে অ্যাক্সেস দেওয়া এবং সেই ম্যানেজার অ্যাকাউন্টের অধীনে সব Google Ads অ্যাকাউন্ট লিঙ্ক করা।
  2. ব্যবহারকারী Google Cloud কমান্ড-লাইন টুল বা GenerateUserCredentials কোডের উদাহরণ-এর মতো কমান্ড-লাইন টুল রান করেন যাতে আপনার অ্যাপকে তার হয়ে তার সব Google Ads অ্যাকাউন্ট ম্যানেজ করার অনুমতি দেওয়া যায়।

Ruby-এর জন্য OAuth 2.0 ক্রেডেনশিয়াল কনফিগার করতে, google_ads_config.rb ফাইলটি আপনার হোম ডিরেক্টরিতে কপি করুন এবং আপনার ক্লায়েন্ট আইডি, ক্লায়েন্ট সিক্রেট ও রিফ্রেশ টোকেন যোগ করার জন্য এটি পরিবর্তন করুন:

# Authentication tells the API that you are allowed to make changes to the
# specific account you're trying to access.
# The default method of authentication is to use a refresh token, client id,
# and client secret to generate an access token.
c.client_id = 'INSERT_CLIENT_ID_HERE'
c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'

কোনও আর্গুমেন্ট ছাড়াই ইনস্ট্যান্টিয়েট করা হলে, ক্লায়েন্ট অটোমেটিক হোম ডিরেক্টরি থেকে কনফিগারেশন ফাইল পড়ে:

client = Google::Ads::GoogleAds::GoogleAdsClient.new

অন্যথায়, আপনি যদি ফাইলটি অন্য কোথাও স্টোর করতে চান, তাহলে আপনি এই ফাইলটি যেখানে রেখেছেন সেই পাথ পাস করে ক্লায়েন্টকে ইনস্ট্যান্টিয়েট করতে পারেন:

client = Google::Ads::GoogleAds::GoogleAdsClient.new(
  'path/to/google_ads_config.rb'
)

আপনি যদি এই তথ্য কোনও ফাইলে সেভ করতে না চান এবং তার পরিবর্তে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করতে চান, তাহলে আপনি এগুলির প্রত্যেকটি সেট করতে পারবেন:

export GOOGLE_ADS_CLIENT_ID="INSERT_CLIENT_ID_HERE"
export GOOGLE_ADS_CLIENT_SECRET="INSERT_CLIENT_SECRET_HERE"
export GOOGLE_ADS_REFRESH_TOKEN="INSERT_REFRESH_TOKEN_HERE"

এছাড়াও, আপনি রানটাইমে প্রোগ্রাম্যাটিকভাবে তথ্য পাস করতে পারেন:

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id = 'INSERT_CLIENT_ID_HERE'
  config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
  config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
end

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

মাল্টি-ইউজার যাচাইকরণ ফ্লো

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

কনফিগারেশন ফাইল ব্যবহার করার সাজেশন দেওয়া হয়। আপনার হোম ডিরেক্টরিতে google_ads_config.rb ফাইল কপি করুন এবং আপনার ক্লায়েন্ট আইডি, ক্লায়েন্ট সিক্রেট, রিফ্রেশ টোকেন ও কাস্টমার আইডি যোগ করার জন্য এটি পরিবর্তন করুন:

# Authentication tells the API that you are allowed to make changes to the
# specific account you're trying to access.
# The default method of authentication is to use a refresh token, client id,
# and client secret to generate an access token.
c.client_id = 'INSERT_CLIENT_ID_HERE'
c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'

# Required for manager accounts only: Specify the login customer ID used to
# authenticate API calls. This will be the customer ID of the authenticated
# manager account. If you need to use different values for this field, then
# make sure to fetch a new copy of the service after each time you change the
# value.
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'

কোনও আর্গুমেন্ট ছাড়াই ইনস্ট্যান্টিয়েট করা হলে, ক্লায়েন্ট অটোমেটিক হোম ডিরেক্টরি থেকে কনফিগারেশন ফাইল পড়ে:

client = Google::Ads::GoogleAds::GoogleAdsClient.new

অন্যথায়, আপনি যদি ফাইলটি অন্য কোথাও স্টোর করতে চান, তাহলে আপনি এই ফাইলটি যেখানে রেখেছেন সেই পাথ পাস করে ক্লায়েন্টকে ইনস্ট্যান্টিয়েট করতে পারেন:

client = Google::Ads::GoogleAds::GoogleAdsClient.new(
  'path/to/google_ads_config.rb'
)

আপনি যদি এই তথ্য কোনও ফাইলে সেভ করতে না চান এবং তার পরিবর্তে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করতে চান, তাহলে আপনি এগুলির প্রত্যেকটি সেট করতে পারবেন:

export GOOGLE_ADS_CLIENT_ID="INSERT_CLIENT_ID_HERE"
export GOOGLE_ADS_CLIENT_SECRET="INSERT_CLIENT_SECRET_HERE"
export GOOGLE_ADS_REFRESH_TOKEN="INSERT_REFRESH_TOKEN_HERE"
export GOOGLE_ADS_LOGIN_CUSTOMER_ID="INSERT_LOGIN_CUSTOMER_ID_HERE"

এছাড়াও, আপনি রানটাইমে প্রোগ্রাম্যাটিকভাবে তথ্য পাস করতে পারেন:

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id = 'INSERT_CLIENT_ID_HERE'
  config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
  config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
  config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

আরও জানতে মাল্টি-ইউজার যাচাইকরণ ওয়ার্কফ্লো গাইড দেখুন। Ruby ক্লায়েন্ট লাইব্রেরিতে রেফারেন্সের জন্য কোডের উদাহরণ অন্তর্ভুক্ত আছে। GenerateUserCredentials কমান্ড-লাইন কোড উদাহরণ থেকে বোঝা যায় যে রানটাইমে ব্যবহারকারীর হয়ে তার Google Ads অ্যাকাউন্ট ম্যানেজ করার জন্য কীভাবে ব্যবহারকারীর যাচাইকরণ পাওয়া যায়। ব্যবহারকারীর যাচাইকরণ প্রয়োজন এমন ডেস্কটপ অ্যাপ তৈরি করতে আপনি এই কোডের উদাহরণ রেফারেন্স হিসেবে ব্যবহার করতে পারেন।

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

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

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

অ্যাপ্লিকেশনের ডিফল্ট ক্রেডেনশিয়াল

Ruby ক্লায়েন্ট লাইব্রেরি (v36.1.0 এবং তার পরবর্তী ভার্সন) অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC)-এর মাধ্যমে যাচাইকরণও সমর্থন করে। এটি আপনাকে আপনার অ্যাপ্লিকেশন কনফিগারেশনের মধ্যে OAuth 2.0 তথ্য কনফিগার করার প্রয়োজন ছাড়াই আপনার অ্যাপ্লিকেশনের জন্য ডিফল্ট শংসাপত্র সেট করতে দেয়।

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

Google Ads API-এর জন্য, আপনার অ্যাপ্লিকেশনের ডিফল্ট ক্রেডেনশিয়াল https://www.googleapis.com/auth/adwords OAuth 2.0 স্কোপ অ্যাক্সেস করতে পারে কিনা তা নিশ্চিত করুন।

অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করতে, Google Cloud কমান্ড-লাইন টুল ব্যবহার করুন এবং ADC-এর জন্য যাচাই করুন:

gcloud auth application-default login

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

আপনার হোম ডিরেক্টরিতে google_ads_config.rb ফাইল কপি করুন এবং use_application_default_credentials-কে true-এ সেট করুন:

# You can also authenticate using Application Default Credentials (ADC).
# To understand how ADC discovers credentials in a given environment, see:
# https://developers.google.com/identity/protocols/application-default-credentials
c.use_application_default_credentials = true

আপনি যদি এই তথ্য কোনও ফাইলে সেভ করতে না চান এবং তার পরিবর্তে এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করতে চান, তাহলে GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS সেট করতে পারেন:

export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS="true"

এছাড়াও, আপনি রানটাইমে প্রোগ্রাম্যাটিকভাবে তথ্য পাস করতে পারেন। আপনার Ruby কোডে ক্লায়েন্ট ইনিশিয়ালাইজ করার সময়, config.use_application_default_credentials = true সেট করুন এবং নির্দিষ্ট OAuth 2.0 ক্রেডেনশিয়াল দেবেন না। লাইব্রেরি অটোমেটিক Google Cloud কমান্ড-লাইন টুল দ্বারা সেট-আপ করা ক্রেডেনশিয়াল শনাক্ত করে এবং ব্যবহার করে:

# Initialize the client using Application Default Credentials.
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.use_application_default_credentials = true

  # Optional: Specify a login customer ID if you are accessing accounts
  # through a manager account.
  # config.login_customer_id = 'YOUR_LOGIN_CUSTOMER_ID'

  # Do NOT include client_id, client_secret, or refresh_token here.
end

Ruby ক্লায়েন্ট লাইব্রেরি কনফিগার করার জন্য উপলভ্য বিকল্প সম্পর্কে আরও জানতে কনফিগারেশন পৃষ্ঠা দেখুন।