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

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

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

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

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

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

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

যদি আপনার ওয়ার্কফ্লোতে কোনও মানুষের ইন্টারঅ্যাকশনের প্রয়োজন না হয়, তাহলে এটিই প্রস্তাবিত ওয়ার্কফ্লো। এই ওয়ার্কফ্লোটির জন্য একটি কনফিগারেশন ধাপ প্রয়োজন, যেখানে ব্যবহারকারী তাদের Google বিজ্ঞাপন অ্যাকাউন্টে একটি পরিষেবা অ্যাকাউন্ট যোগ করে। এরপর অ্যাপটি ব্যবহারকারীর Google বিজ্ঞাপন অ্যাকাউন্ট পরিচালনা করার জন্য পরিষেবা অ্যাকাউন্টের শংসাপত্র ব্যবহার করতে পারে। এটি কনফিগার করতে, Google ক্লাউড কনসোলে JSON কী ফাইল তৈরি এবং ডাউনলোড করুন, তারপর google_ads_config.rb আপনার হোম ডিরেক্টরিতে কপি করুন এবং আপনার পরিষেবা অ্যাকাউন্টের কীফাইলের অবস্থান এবং ব্যবহারকারীর ইমেল ঠিকানা নির্দিষ্ট করতে এটি পরিবর্তন করুন:

  # 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'
  # 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"
export GOOGLE_ADS_IMPERSONATED_EMAIL="your_email@email.com"

আপনি রানটাইমের সময় প্রোগ্রাম্যাটিকভাবে তথ্যটি পাস করতে পারেন, googleauth gem ব্যবহার করে একটি পরিষেবা অ্যাকাউন্ট JSON ফাইল থেকে শংসাপত্র তৈরি করতে পারেন:

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 = Google::Auth::ServiceAccountCredentials.make_creds(
  json_key_io: File.open(key_file),
  scope: scopes
)

# Initialize the Google Ads API client with these credentials
client = Google::Ads::GoogleAds::Client.new do |config|
  config.developer_token = "YOUR_DEVELOPER_TOKEN"
  # Inject the service account credentials
  config.oauth2_client = credentials
end

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

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

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

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

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

  # The developer token is required to authenticate that you are allowed to
  # make API calls.
  c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'

  # 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_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
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.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
  config.client_id = 'INSERT_CLIENT_ID_HERE'
  config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
  config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
end

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

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

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

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

  # The developer token is required to authenticate that you are allowed to
  # make API calls.
  c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'

  # 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 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_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
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.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
  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

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

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

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

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

অ্যাপ্লিকেশনের ডিফল্ট শংসাপত্র

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

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

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

অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করার জন্য, আমরা Google ক্লাউড কমান্ড লাইন টুল ব্যবহার করে ADC-এর জন্য প্রমাণীকরণ করার পরামর্শ দিচ্ছি:

gcloud auth application-default login

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

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

  # The developer token is required to authenticate that you are allowed to
  # make API calls.
  c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'

  # 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_DEVELOPER_TOKEN এবং GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS সেট করতে পারেন:

export GOOGLE_ADS_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS="true"

রানটাইমে আপনি প্রোগ্রাম্যাটিকভাবে তথ্যটিও পাস করতে পারেন। আপনার রুবি কোডে ক্লায়েন্টটি ইনিশিয়ালাইজ করার সময়, স্পষ্ট OAuth2 শংসাপত্রগুলি প্রদান করবেন না । লাইব্রেরি স্বয়ংক্রিয়ভাবে Google ক্লাউড কমান্ড লাইন টুল দ্বারা সেট আপ করা শংসাপত্রগুলি সনাক্ত করবে এবং ব্যবহার করবে। আপনাকে এখনও আপনার ডেভেলপার টোকেন নির্দিষ্ট করতে হবে।

# Initialize the client. It will automatically use Application Default Credentials.
client = Google::Ads::GoogleAds::Client.new do |config|
  # Developer Token is mandatory for the Google Ads API.
  config.developer_token = "YOUR_DEVELOPER_TOKEN"

  # 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 oauth2_client_id, oauth2_client_secret, or oauth2_refresh_token here.
end

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