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

পরিষেবা অ্যাকাউন্ট ওয়ার্কফ্লো-এর মতো, সিঙ্গেল-ইউজার যাচাইকরণ ফ্লো, অ্যাপকে সব প্রয়োজনীয় অ্যাকাউন্টে অ্যাক্সেস দেওয়ার জন্য Google Ads UI-এর মাধ্যমে অফার করা অনুমোদন ও ব্যবহারকারী ম্যানেজমেন্ট ফিচার ব্যবহার করে। এই যাচাইকরণ ওয়ার্কফ্লোতে দুটি ধাপ আছে:

  • আপনি একজন ব্যবহারকারীকে সব Google Ads অ্যাকাউন্ট অ্যাক্সেস করার অনুমতি দেন যা অ্যাপের মাধ্যমে ম্যানেজ করা উচিত।
  • ব্যবহারকারী আপনার অ্যাপকে তার হয়ে Google Ads অ্যাকাউন্ট ম্যানেজ করার অনুমতি দেন, যার ফলে অ্যাপটি সব Google Ads অ্যাকাউন্টে অ্যাক্সেস পায়।

যেহেতু শুধুমাত্র একজন ব্যবহারকারী জড়িত, তাই আপনি নিজের OAuth 2.0 ব্যবহারকারী যাচাইকরণ ফ্লো তৈরি করার পরিবর্তে gcloud CLI বা GenerateUserCredential কোড উদাহরণ-এর মতো টুলের উপর নির্ভর করতে পারেন।

এই ওয়ার্কফ্লোর সাথে সম্পর্কিত একটি ব্যবহারিক উদাহরণ হল, যখন আপনার অ্যাকাউন্ট কয়েকজন ব্যবহারকারীর লগ-ইন (যেমন, ৩ থেকে ৪ জন ব্যবহারকারী) ব্যবহার করে অ্যাক্সেস করা যায়, তাই gcloud CLI-এর মতো কমান্ড-লাইন টুল ব্যবহার করে ৩ থেকে ৪ জন ব্যবহারকারীর জন্য অনুমোদন পাওয়ার প্রচেষ্টার তুলনায় সম্পূর্ণ OAuth মাল্টি-ইউজার যাচাইকরণ ওয়ার্কফ্লো তৈরি করার জন্য ডেভেলপমেন্টের প্রচেষ্টা যুক্তিযুক্ত নয়।

ত্রুটি

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

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

ক্রেডেনশিয়াল তৈরি করুন

  1. আপনার অ্যাপ্লিকেশনের জন্য OAuth-এর সম্মতি সংক্রান্ত স্ক্রিন কনফিগার করুন এবং OAuth 2.0 স্কোপ হিসেবে https://www.googleapis.com/auth/adwords যোগ করুন। বিস্তারিত জানতে আপনার OAuth-এর সম্মতি সংক্রান্ত স্ক্রিন সেট-আপ করা দেখুন।

  2. নির্দেশাবলী অনুসরণ করে ক্লায়েন্ট আইডি ও ক্লায়েন্ট সিক্রেট তৈরি করুন। OAuth 2.0 ক্লায়েন্ট তৈরি করার পরে, কনফার্মেশন ডায়ালগে JSON ডাউনলোড করুন বোতামে ক্লিক করে ক্লায়েন্টের JSON ফাইল ডাউনলোড করুন। credentials.json হিসেবে ফাইলটি সেভ করুন।

  3. আপনার অ্যাপ ব্যবহার করে ম্যানেজ করতে চান এমন সব Google Ads অ্যাকাউন্টে অ্যাক্সেস আছে এমন একটি ব্যবহারকারীর অ্যাকাউন্ট শনাক্ত করুন। অ্যাক্সেস নেই এমন অ্যাকাউন্ট থাকলে, সেই ব্যবহারকারীকে অ্যাকাউন্ট অ্যাক্সেস করার অনুমতি দিন। এই ব্যবহারকারীর অ্যাকাউন্টে পাসকী সেট-আপ করা আছে কিনা তা নিশ্চিত করুন (নতুন তৈরি করা পাসকী বিশ্বস্ত হয়ে ওঠার আগে ৭ দিন পর্যন্ত নিরাপত্তা সংক্রান্ত কোনও অ্যকশন নেওয়া যাবে না)।

  4. gcloud CLI ডাউনলোড ও ইনস্টল করুন। ইনস্টল করা হয়ে গেলে, কমান্ড-লাইন প্রম্পট থেকে 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. পূর্ববর্তী ধাপ থেকে credentials.json ফাইলের সাথে gcloud CLI টুল রান করে একটি OAuth 2.0 রিফ্রেশ টোকেন জেনারেট করুন। --client-id-file প্যারামিটার পাস করা প্রয়োজন যাতে gcloud CLI-এর ডিফল্ট প্রোজেক্টের পরিবর্তে আপনার Google API Console প্রোজেক্টের অধীনে রিফ্রেশ টোকেন ইস্যু করা হয়:

    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 কমান্ডটি একটি নতুন ব্রাউজার উইন্ডোতে Google অ্যাকাউন্ট সাইন-ইন উইন্ডো খোলে এবং আপনাকে OAuth 2.0 যাচাইকরণ ধাপের মাধ্যমে নিয়ে যায়। আগের ধাপে আপনি যে ব্যবহারকারীকে বেছে নিয়েছেন, সেই ব্যবহারকারী হিসেবে সাইন-ইন করুন এবং পাসকী ব্যবহার করে আপনার পরিচয় যাচাই করুন। আপনার অ্যাপ যাচাই করা না হলে, আপনি একটি সতর্কতামূলক স্ক্রিন দেখতে পেতে পারেন। এই ধরনের ক্ষেত্রে, উন্নত লিঙ্কে ক্লিক করে PROJECT_NAME (অসুরক্ষিত) লিঙ্কে যান বিকল্পে ক্লিক করা নিরাপদ।

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

ক্লায়েন্ট লাইব্রেরি কনফিগারেশন

আপনার ক্লায়েন্ট লাইব্রেরি কীভাবে কনফিগার করবেন সেই সংক্রান্ত নির্দেশাবলীর জন্য আপনার প্রোগ্রামিং ল্যাঙ্গুয়েজের সাথে সম্পর্কিত ট্যাব বেছে নিন। আপনার অনুমোদিত ব্যবহারকারী Google Ads ম্যানেজার অ্যাকাউন্টের মাধ্যমে ক্লায়েন্ট অ্যাকাউন্ট অ্যাক্সেস করলে, login-customer-id (বা loginCustomerId) হাইফেন ছাড়া সেই ম্যানেজার অ্যাকাউন্টের ১০-সংখ্যার গ্রাহক আইডিতে সেট করুন।

Java

আপনার 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

অতিরিক্ত বিকল্পের জন্য কনফিগারেশন গাইড দেখুন।

.NET

GoogleAdsConfig ইনস্ট্যান্সে OAuth 2.0 ক্রেডেনশিয়াল সেট করুন এবং 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);

অতিরিক্ত বিকল্পের জন্য কনফিগারেশন গাইড দেখুন।

Python

আপনার 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

অতিরিক্ত বিকল্পের জন্য কনফিগারেশন গাইড দেখুন।

PHP

আপনার 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"

অতিরিক্ত বিকল্পের জন্য কনফিগারেশন গাইড দেখুন।

Ruby

আপনার 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

অতিরিক্ত বিকল্পের জন্য কনফিগারেশন গাইড দেখুন।

Perl

আপনার 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

অতিরিক্ত বিকল্পের জন্য কনফিগারেশন গাইড দেখুন।

কার্ল

OAuth 2.0 অ্যাক্সেস টোকেন ফেচ করতে HTTP ক্লায়েন্ট ব্যবহার করে শুরু করুন। এই নির্দেশিকায় 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/v26/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"
}