গুগল বিজ্ঞাপন অ্যাকাউন্ট দুই ধরণের: গুগল বিজ্ঞাপন ম্যানেজার অ্যাকাউন্ট এবং গুগল বিজ্ঞাপন বিজ্ঞাপনদাতা অ্যাকাউন্ট (যা গ্রাহক বা ক্লায়েন্ট অ্যাকাউন্ট নামেও পরিচিত)। ম্যানেজার অ্যাকাউন্টগুলি অন্যান্য গুগল বিজ্ঞাপন ম্যানেজার অ্যাকাউন্ট বা গুগল বিজ্ঞাপন বিজ্ঞাপনদাতা অ্যাকাউন্ট পরিচালনা করতে পারে। আপনি একটি বিজ্ঞাপনদাতা অ্যাকাউন্টকে একটি ম্যানেজার অ্যাকাউন্টের সাথে লিঙ্ক করতে পারেন এবং তারপর ম্যানেজার অ্যাকাউন্টের মাধ্যমে বিজ্ঞাপনদাতা অ্যাকাউন্টটি পরিচালনা করতে পারেন। সামগ্রিক লিঙ্কযুক্ত কাঠামোটি হল একটি নির্দেশিত অ্যাসাইক্লিক গ্রাফ যেখানে লিফ লেভেলে বিজ্ঞাপনদাতা অ্যাকাউন্ট রয়েছে।
আপনি পৃথক ব্যবহারকারী বা পরিষেবা অ্যাকাউন্টগুলিকে Google বিজ্ঞাপন অ্যাকাউন্টগুলিতে অ্যাক্সেস দিতে পারেন। ব্যবহারকারীদের বিজ্ঞাপনদাতার অ্যাকাউন্টে অ্যাক্সেস দেওয়ার দুটি উপায় রয়েছে:
- ব্যবহারকারীকে বিজ্ঞাপনদাতার অ্যাকাউন্টে আমন্ত্রণ জানিয়ে সরাসরি অ্যাক্সেস দিন।
- ব্যবহারকারীকে বিজ্ঞাপনদাতার অ্যাকাউন্টে পরোক্ষ অ্যাক্সেস প্রদান করুন, সেই অ্যাকাউন্টের সাথে লিঙ্ক করা একটি ম্যানেজার অ্যাকাউন্টে আমন্ত্রণ জানিয়ে। ব্যবহারকারী বিজ্ঞাপনদাতার অ্যাকাউন্টে অ্যাক্সেস পান কারণ ম্যানেজার অ্যাকাউন্টের অধীনে লিঙ্ক করা সমস্ত অ্যাকাউন্টে অ্যাক্সেস থাকে।
আপনি যখন কোনও ব্যবহারকারীকে অ্যাকাউন্ট পরিচালনা করার জন্য আমন্ত্রণ জানান তখন আপনি ব্যবহারকারীর ভূমিকাও নির্ধারণ করতে পারেন।
নিম্নলিখিত অ্যাকাউন্ট শ্রেণিবিন্যাস বিবেচনা করুন। ধরে নিন যে সমস্ত ব্যবহারকারীর স্ট্যান্ডার্ড অ্যাক্সেস রয়েছে।

নিম্নলিখিত সারণীতে এই অ্যাকাউন্ট কাঠামোর সারসংক্ষেপ দেওয়া হল।
| ব্যবহারকারী | সরাসরি অ্যাক্সেস আছে | পরোক্ষ অ্যাক্সেস আছে |
|---|---|---|
| ইউ১, এসএ১ | এম১ | এম২, এ১, এ২, এ৩ |
| U2 | এম২, এম৩ | A1, A2, A3, A4 |
| U3 সম্পর্কে | A4 এর বিবরণ |
লগইন গ্রাহক আইডি
একজন ব্যবহারকারীর একাধিক অ্যাকাউন্ট হায়ারার্কিতে অ্যাক্সেস থাকতে পারে। এই ধরনের ক্ষেত্রে API কল করার সময়, অনুমোদন এবং অ্যাকাউন্ট অ্যাক্সেসের স্তর সঠিকভাবে নির্ধারণ করার জন্য আপনাকে যে রুট অ্যাকাউন্টটি ব্যবহার করতে হবে তা নির্দিষ্ট করতে হবে। API অনুরোধের অংশ হিসাবে একটি login-customer-id হেডার নির্দিষ্ট করে এটি করা হয়।
নিচের টেবিলটি পূর্ববর্তী উদাহরণ থেকে অ্যাকাউন্টের শ্রেণিবিন্যাস ব্যবহার করে দেখায় যে আপনি কোন লগইন গ্রাহক আইডি ব্যবহার করতে পারেন এবং আপনি যে অ্যাকাউন্টগুলিতে কল করতে পারেন তার তালিকা।
| ব্যবহারকারী | লগইন গ্রাহক আইডি ব্যবহার করার জন্য | API কল করার জন্য অ্যাকাউন্টগুলি |
|---|---|---|
| ইউ১, এসএ১ | এম১ | এম১, এম২, এ১, এ২, এ৩ |
| U2 | M2 সম্পর্কে | এম২, এ১, এ২, এ৩ |
| U2 | এম৩ | এম৩, এ১, এ৪ |
| U3 সম্পর্কে | A4 এর বিবরণ | A4 এর বিবরণ |
আপনি যে Google Ads অ্যাকাউন্টে কল করছেন তাতে যদি ব্যবহারকারীর সরাসরি অ্যাক্সেস থাকে, তাহলে login-customer-id হেডার প্রদান করা এড়িয়ে যেতে পারেন। উদাহরণস্বরূপ, A4 এ কল করার জন্য U3 শংসাপত্র ব্যবহার করার সময় আপনাকে login-customer-id হেডার নির্দিষ্ট করার প্রয়োজন নেই, কারণ Google Ads সার্ভারগুলি গ্রাহক আইডি ( A4 ) থেকে অ্যাক্সেস লেভেল সঠিকভাবে নির্ধারণ করতে পারে।
আপনি যদি আমাদের ক্লায়েন্ট লাইব্রেরিগুলির একটি ব্যবহার করেন, তাহলে login-customer-id হেডার নির্দিষ্ট করতে নিম্নলিখিত সেটিংস ব্যবহার করুন।
জাভা
আপনার ads.properties ফাইলে নিম্নলিখিত সেটিংটি যোগ করুন।
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
সি#
GoogleAdsConfig অবজেক্টটি ইনিশিয়ালাইজ করার সময় নিম্নলিখিত সেটিংটি যোগ করুন এবং এটি ব্যবহার করে একটি GoogleAdsClient অবজেক্ট তৈরি করুন।
GoogleAdsConfig config = new GoogleAdsConfig()
{
...
LoginCustomerId = ******
};
GoogleAdsClient client = new GoogleAdsClient(config);
পিএইচপি
আপনার google_ads_php.ini ফাইলে নিম্নলিখিত সেটিংটি যোগ করুন।
[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
পাইথন
আপনার google-ads.yaml ফাইলে নিম্নলিখিত সেটিংটি যোগ করুন।
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
রুবি
আপনার google_ads_config.rb ফাইলে নিম্নলিখিত সেটিংটি যোগ করুন।
Google::Ads::GoogleAds::Config.new do |c|
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
এই ফাইলটি যেখানে রাখবেন সেখানে পাথটি দিয়ে একটি GoogleAdsClient ইনস্ট্যান্স তৈরি করুন।
client = Google::Ads::GoogleAds::GoogleAdsClient.new('path/to/google_ads_config.rb')
পার্ল
আপনার googleads.properties ফাইলে নিম্নলিখিত সেটিংটি যোগ করুন।
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
কার্ল করা
curl কমান্ড চালানোর সময় নিম্নলিখিত কমান্ড লাইন আর্গুমেন্টটি নির্দিষ্ট করুন।
-H "login-customer-id: LOGIN_CUSTOMER_ID"
ব্যবহারকারীর সরাসরি অ্যাক্সেস আছে এমন অ্যাকাউন্টের তালিকা পুনরুদ্ধার করতে আপনি CustomerService.ListAccessibleCustomers পদ্ধতি ব্যবহার করতে পারেন। এই অ্যাকাউন্টগুলি login-customer-id হেডারের জন্য বৈধ মান হিসেবে ব্যবহার করা যেতে পারে।
জাভা
private void runExample(GoogleAdsClient client) { // Optional: Change credentials to use a different refresh token, to retrieve customers // available for a specific user. // // UserCredentials credentials = // UserCredentials.newBuilder() // .setClientId("INSERT_OAUTH_CLIENT_ID") // .setClientSecret("INSERT_OAUTH_CLIENT_SECRET") // .setRefreshToken("INSERT_REFRESH_TOKEN") // .build(); // // client = client.toBuilder().setCredentials(credentials).build(); try (CustomerServiceClient customerService = client.getLatestVersion().createCustomerServiceClient()) { ListAccessibleCustomersResponse response = customerService.listAccessibleCustomers( ListAccessibleCustomersRequest.newBuilder().build()); System.out.printf("Total results: %d%n", response.getResourceNamesCount()); for (String customerResourceName : response.getResourceNamesList()) { System.out.printf("Customer resource name: %s%n", customerResourceName); } } }
সি#
public void Run(GoogleAdsClient client) { // Get the CustomerService. CustomerServiceClient customerService = client.GetService(Services.V22.CustomerService); try { // Retrieve the list of customer resources. string[] customerResourceNames = customerService.ListAccessibleCustomers(); // Display the result. foreach (string customerResourceName in customerResourceNames) { Console.WriteLine( $"Found customer with resource name = '{customerResourceName}'."); } } catch (GoogleAdsException e) { Console.WriteLine("Failure:"); Console.WriteLine($"Message: {e.Message}"); Console.WriteLine($"Failure: {e.Failure}"); Console.WriteLine($"Request ID: {e.RequestId}"); throw; } }
পিএইচপি
public static function runExample(GoogleAdsClient $googleAdsClient) { $customerServiceClient = $googleAdsClient->getCustomerServiceClient(); // Issues a request for listing all accessible customers. $accessibleCustomers = $customerServiceClient->listAccessibleCustomers(new ListAccessibleCustomersRequest()); print 'Total results: ' . count($accessibleCustomers->getResourceNames()) . PHP_EOL; // Iterates over all accessible customers' resource names and prints them. foreach ($accessibleCustomers->getResourceNames() as $resourceName) { /** @var string $resourceName */ printf("Customer resource name: '%s'%s", $resourceName, PHP_EOL); } }
পাইথন
def main(client: GoogleAdsClient) -> None: customer_service: CustomerServiceClient = client.get_service( "CustomerService" ) accessible_customers: ListAccessibleCustomersResponse = ( customer_service.list_accessible_customers() ) result_total: int = len(accessible_customers.resource_names) print(f"Total results: {result_total}") resource_names: List[str] = accessible_customers.resource_names for resource_name in resource_names: # resource_name is implicitly str print(f'Customer resource name: "{resource_name}"')
রুবি
def list_accessible_customers() # GoogleAdsClient will read a config file from # ENV['HOME']/google_ads_config.rb when called without parameters client = Google::Ads::GoogleAds::GoogleAdsClient.new accessible_customers = client.service.customer.list_accessible_customers().resource_names accessible_customers.each do |resource_name| puts "Customer resource name: #{resource_name}" end end
পার্ল
sub list_accessible_customers { my ($api_client) = @_; my $list_accessible_customers_response = $api_client->CustomerService()->list_accessible_customers(); printf "Total results: %d.\n", scalar @{$list_accessible_customers_response->{resourceNames}}; foreach my $resource_name (@{$list_accessible_customers_response->{resourceNames}}) { printf "Customer resource name: '%s'.\n", $resource_name; } return 1; }
কার্ল করা
# Returns the resource names of customers directly accessible by the user # authenticating the call. # # Variables: # API_VERSION, # DEVELOPER_TOKEN, # OAUTH2_ACCESS_TOKEN: # See https://developers.google.com/google-ads/api/rest/auth#request_headers # for details. # curl -f --request GET \ "https://googleads.googleapis.com/v${API_VERSION}/customers:listAccessibleCustomers" \ --header "Content-Type: application/json" \ --header "developer-token: ${DEVELOPER_TOKEN}" \ --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \
যদি ListAccessibleCustomers পদ্ধতি আমার গ্রাহক আইডি পুনরুদ্ধার না করে?
যদি CustomerService.ListAccessibleCustomers পদ্ধতিটি এমন কোনও গ্রাহক আইডি পুনরুদ্ধার না করে যা আপনি ফলাফলে প্রদর্শিত হওয়ার আশা করেছিলেন, তাহলে এর কয়েকটি সম্ভাব্য ব্যাখ্যা রয়েছে।
আপনার গ্রাহক আইডিতে অ্যাক্সেস আছে, কিন্তু অ্যাক্সেসটি একটি প্যারেন্ট ম্যানেজার অ্যাকাউন্টের মাধ্যমে জারি করা হয়। উদাহরণস্বরূপ, যদি আপনি পূর্ববর্তী উদাহরণে ব্যবহারকারী
U1শংসাপত্র ব্যবহার করেListAccessibleCustomersপদ্ধতিটি কল করেন, তাহলে ফলাফলে আপনি কেবলM1ফিরে পাবেন, যদিওU1আরও অ্যাকাউন্টে অ্যাক্সেস রয়েছে। এই সম্ভাবনা নিশ্চিত করতে,ListAccessibleCustomersপদ্ধতি দ্বারা ফেরত আসা প্রতিটি অ্যাকাউন্টের জন্য অ্যাকাউন্ট শ্রেণিবিন্যাস পুনরুদ্ধার করুন । এটি করার জন্য, পূর্ববর্তী বিভাগে বর্ণিত হিসাবে এই প্রতিটি অ্যাকাউন্টকে login-customer-id হিসাবে সেট করুন। যদি আপনার লক্ষ্য অ্যাকাউন্টে অ্যাক্সেস থাকে, তাহলে আপনি এটি অ্যাকাউন্ট শ্রেণিবিন্যাসের একটি অংশ হিসাবে আনতে সক্ষম হবেন।আপনি ভুল OAuth শংসাপত্র ব্যবহার করছেন। সবচেয়ে সাধারণ পরিস্থিতি হল আপনি অন্য কোনও ব্যবহারকারীর শংসাপত্র ব্যবহার করছেন। উদাহরণস্বরূপ, এটি দুর্ঘটনাক্রমে স্যান্ডবক্স বা ডেভেলপার শংসাপত্রগুলিকে প্রোডাকশন শংসাপত্রের সাথে মিশিয়ে ফেলার কারণে হতে পারে অথবা ডাটাবেস বা স্থানীয় ক্যাশে থেকে অন্য কোনও ব্যবহারকারীর শংসাপত্র ভুলভাবে পড়ার কারণে হতে পারে। এই সমস্যা সমাধানের একটি সম্ভাব্য উপায় হল লগ-ইন করা ব্যবহারকারীর নাম এবং ইমেল ঠিকানা পুনরুদ্ধার করার জন্য Google People API ব্যবহার করা এবং এটি আপনার প্রত্যাশিত ইমেল ঠিকানার সাথে মেলে কিনা তা যাচাই করা।
আপনার অ্যাকাউন্টে অ্যাক্সেস নেই। সঠিক গ্রাহক অ্যাকাউন্টে অ্যাক্সেস পেতে নির্দেশাবলী অনুসরণ করুন।
ব্যবহারকারীর ভূমিকা
Google Ads API-এর নিজস্ব কোনও পৃথক অ্যাক্সেস মডেল নেই, অথবা কার্যকারিতা সীমিত করার জন্য আলাদা OAuth 2.0 স্কোপ ব্যবহার করে না। উদাহরণস্বরূপ, Google Ads API শুধুমাত্র পঠনযোগ্য বনাম পঠনযোগ্য লেখার জন্য একই স্কোপ ব্যবহার করে। পরিবর্তে, Google Ads API একই ব্যবহারকারীর ভূমিকা অনুসরণ করে যা Google Ads সমর্থন করে। যখন ম্যানেজার স্তরে কোনও অ্যাকাউন্টে কোনও ব্যবহারকারীর ভূমিকা দেওয়া হয়, তখন পদটি অনুক্রমের অ্যাকাউন্টগুলি দ্বারা উত্তরাধিকারসূত্রে প্রাপ্ত হয়। যদি কোনও ব্যবহারকারীর কোনও নির্দিষ্ট অ্যাকাউন্টে বিরোধপূর্ণ ভূমিকা থাকে, তাহলে API অনুরোধে নির্দিষ্ট login-customer-id অ্যাকাউন্ট দ্বারা সঠিক স্তরটি সমাধান করা হয়।
নিম্নলিখিত টেবিলটি পূর্ববর্তী উদাহরণ থেকে অ্যাকাউন্টের শ্রেণিবিন্যাস ব্যবহার করে এবং ব্যবহারকারীদের বিভিন্ন ব্যবহারকারীর ভূমিকা প্রদানের প্রভাব দেখায়।
| ব্যবহারকারী | ব্যবহারকারীর ভূমিকা মঞ্জুর করা হয়েছে | লগইন-গ্রাহক-আইডি | কার্যকর অ্যাক্সেস লেভেল |
|---|---|---|---|
| SA1 সম্পর্কে | M1 অ্যাকাউন্টে স্ট্যান্ডার্ড অ্যাক্সেস | এম১ | M1, M2, A1, A2, A3-তে স্ট্যান্ডার্ড অ্যাক্সেস |
| U2 | M2 তে স্ট্যান্ডার্ড অ্যাক্সেস M3-তে কেবল পঠনযোগ্য অ্যাক্সেস | M2 সম্পর্কে | M2, A1, A2, A3-এ স্ট্যান্ডার্ড অ্যাক্সেস |
| U2 | M2 তে স্ট্যান্ডার্ড অ্যাক্সেস M3-তে কেবল পঠনযোগ্য অ্যাক্সেস | এম৩ | M3, A1, A4-এ কেবল পঠনযোগ্য অ্যাক্সেস |