কিভাবে এটা কাজ করে

গ্রাহক API ডিভাইসগুলির প্রোগ্রাম্যাটিক নিয়ন্ত্রণ এবং Android জিরো-টাচ তালিকাভুক্তির জন্য কনফিগারেশন দেয়। এই নথিটি এন্টারপ্রাইজ মোবিলিটি ম্যানেজমেন্ট (EMM) প্রদানকারী এবং এন্টারপ্রাইজ আইটি ডেভেলপারদের API-এর সাথে পরিচয় করিয়ে দেয়। এই নথিটি পড়ার পরে, আপনার API-এ ব্যবহৃত মূল সংস্থানগুলি এবং তারা কীভাবে ইন্টারঅ্যাক্ট করে তা বোঝা উচিত। আপনি যদি জিরো-টাচ এনরোলমেন্টে নতুন হয়ে থাকেন, তাহলে সংক্ষিপ্ত android.com ভূমিকা পড়ুন।

ওভারভিউ

গ্রাহক API সংস্থাগুলিকে সাহায্য করে যারা Android জিরো-টাচ এনরোলমেন্ট ডিভাইস ক্রয় করে৷ আপনার অ্যাপ বা টুল আইটি অ্যাডমিনদের নিম্নলিখিত কাজ করতে সাহায্য করতে পারে:

  • প্রভিশনিং কনফিগারেশন তৈরি করুন, সম্পাদনা করুন এবং মুছুন।
  • একটি ডিভাইসে একটি কনফিগারেশন প্রয়োগ করুন বা সরান৷
  • সামনের দিকে জিরো-টাচ নথিভুক্তিতে যোগ করা যেকোনো ডিভাইসের জন্য একটি ডিফল্ট কনফিগারেশন নির্বাচন করুন।

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

এই API এর সাধারণ ব্যবহারকারী হতে পারে:

  • EMM প্রদানকারীরা তাদের কনসোলে জিরো-টাচ এনরোলমেন্টের জন্য সমর্থন যোগ করছে।
  • এন্টারপ্রাইজ আইটি ডেভেলপাররা জিরো-টাচ এনরোলমেন্ট টাস্কগুলিকে স্বয়ংক্রিয় করার জন্য টুল তৈরি করে।

মূল সম্পদ

কনফিগারেশন এবং ডিভাইসগুলি হল মূল সম্পদ যা আপনি API এ ব্যবহার করেন। একটি প্রতিষ্ঠান জিরো-টাচ এনরোলমেন্ট পোর্টাল ব্যবহার করে কনফিগারেশন এবং ডিভাইস তৈরি করতে পারে।

ডিভাইস এবং গ্রাহক সম্পদ সম্পর্ক

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

আপনার অ্যাপ ব্যবহার করতে পারে এমন সমস্ত API পদ্ধতি এবং সংস্থান তালিকাভুক্ত করতে, API রেফারেন্স দেখুন।

কনফিগারেশন

Configuration API সংস্থান নিম্নলিখিতগুলিকে একত্রিত করে:

  • EMM এর DPC ডিভাইসগুলিতে ইনস্টল করা আছে৷
  • EMM নীতিগুলি ডিভাইসগুলিতে প্রয়োগ করা হয়েছে৷
  • সেটআপের সময় ব্যবহারকারীদের সাহায্য করার জন্য ডিভাইসে প্রদর্শিত যোগাযোগের তথ্য।

API ব্যবহার করে, আপনার অ্যাপ আইটি অ্যাডমিনদের জন্য কনফিগারেশন পরিচালনা করতে পারে। কনফিগারেশন আনতে, তৈরি করতে, আপডেট করতে এবং মুছতে API-কে কল করুন। নীচের উদাহরণটি দেখায় কিভাবে একটি নতুন কনফিগারেশন তৈরি করতে হয়:

জাভা

// Add metadata to help the device user during provisioning.
Configuration configuration = new Configuration();
configuration.setConfigurationName("Sales team");
configuration.setCompanyName("XYZ Corp.");
configuration.setContactEmail("it-support@example.com");
configuration.setContactPhone("+1 (800) 555-0112");
configuration.setCustomMessage("We're setting up your phone. Call or email for help.");

// Set the DPC that zero-touch enrollment downloads and installs from Google Play.
configuration.setDpcResourcePath(dpc.getName());

// Set the JSON-formatted EMM provisioning extras that are passed to the DPC.
configuration.setDpcExtras("{"
      + "\"android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED\":true,"
      + "\"android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE\":{"
      + "\"default_min_password_length\":6,"
      + "\"company_name\":\"XYZ Corp\","
      + "\"management_server\":\"emm.example.com\","
      + "\"terms_url\":\"https://www.example.com/policies/terms/\","
      + "\"allowed_user_domains\":\"[\\\"example.com\\\", \\\"example.org\\\"]\""
      + "}"
      + "}");

// Create the new configuration on the server.
AndroidProvisioningPartner.Customers.Configurations.Create request =
      service.customers().configurations().create(customerAccount, configuration);
Configuration response = request.execute();

.নেট

// Add metadata to help the device user during provisioning.
Configuration configuration = new Configuration
{
    ConfigurationName = "Sales team",
    CompanyName = "XYZ Corp.",
    ContactEmail = "it-support@example.com",
    ContactPhone = "+1 (800) 555-0112",
    CustomMessage = "We're setting up your phone. Call or email for help."
};

// Set the DPC that zero-touch enrollment downloads and installs from Google Play.
configuration.DpcResourcePath = dpc.Name;

// Set the JSON-formatted EMM provisioning extras that are passed to the DPC.
configuration.DpcExtras = @"{
    ""android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED"":true,
    ""android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE"":{
    ""default_min_password_length"":6,
    ""company_name"":""XYZ Corp"",
    ""management_server"":""emm.example.com"",
    ""terms_url"":""https://www.example.com/policies/terms/"",
    ""allowed_user_domains"":""[\""example.com\"", \""example.org\""]""
  }
}";

// Create the new configuration on the server.
var request = service.Customers.Configurations.Create(configuration, customerAccount);
var response = request.Execute();

পাইথন

# Add metadata to help the device user during provisioning.
configuration = {
    'configurationName': 'Sales team',
    'companyName': 'XYZ Corp.',
    'contactEmail': 'it-support@example.com',
    'contactPhone': '+1 (800) 555-0112',
    'customMessage': 'We\'re setting up your phone. Call or email for help.'}

# Set the DPC that zero-touch enrollment installs from Google Play.
configuration['dpcResourcePath'] = dpc['name']

# Set the JSON-formatted EMM provisioning extras that are passed to the DPC.
configuration['dpcExtras'] = '''{
    "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED":true,
    "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE":{
      "default_min_password_length":6,
      "company_name":"XYZ Corp",
      "management_server":"emm.example.com",
      "terms_url":"https://www.example.com/policies/terms/",
      "allowed_user_domains":"[\\"example.com\\", \\"example.org\\"]"}
}'''

# Create the new configuration on the server.
response = service.customers().configurations().create(
    parent=customer_account, body=configuration).execute()

আপনি যখন প্যাচ API ব্যবহার করে একটি কনফিগারেশন আপডেট করেন, তখন মনে রাখবেন ফিল্ড মাস্ক —অথবা প্রতিটি ক্ষেত্রের জন্য একটি মান যা আপনি null হতে চান না। একটি উদাহরণের জন্য ডিফল্ট কনফিগারেশন (নীচে) দেখুন যা দেখায় কিভাবে একটি কনফিগারেশন দক্ষতার সাথে আপডেট করা যায়।

কনফিগারেশন মুছুন

আপনি একটি কনফিগারেশন মুছে ফেলতে পারবেন না যদি এটি এখনও ডিভাইসগুলিতে প্রয়োগ করা হয়। আপনি যদি একটি ইন-ইউজ কনফিগারেশন মুছে ফেলার চেষ্টা করেন, API পদ্ধতিটি একটি HTTP 400 Bad Request স্ট্যাটাস কোড এবং কতগুলি ডিভাইস কনফিগারেশন ব্যবহার করে তা ব্যাখ্যা করে একটি বার্তা প্রদান করে। আবার চেষ্টা করার আগে ডিভাইসগুলি থেকে কনফিগারেশন সরাতে customers.devices.removeConfiguration এ কল করুন।

ডিফল্ট কনফিগারেশন

জিরো-টাচ এনরোলমেন্ট সবচেয়ে ভালো কাজ করে যখন কোনো প্রতিষ্ঠান একটি ডিফল্ট কনফিগারেশন সেট করে যা প্রতিষ্ঠানের কেনা যেকোনো নতুন ডিভাইসে প্রয়োগ করা হয়। আইটি প্রশাসকদের একটি ডিফল্ট কনফিগারেশন সেট করার জন্য অনুরোধ করার কথা বিবেচনা করুন যদি একটি সেট করা না থাকে৷ নিচের উদাহরণটি দেখায় কিভাবে একটি বিদ্যমান কনফিগারেশনকে isDefault true সেট করে ডিফল্ট করা যায়:

জাভা

// Send minimal data with the request. Just the 2 required fields.
// targetConfiguration is an existing configuration that we want to make the default.
Configuration configuration = new Configuration();
configuration.setIsDefault(true);
configuration.setConfigurationId(targetConfiguration.getConfigurationId());

// Call the API, including the FieldMask to avoid setting other fields to null.
AndroidProvisioningPartner.Customers.Configurations.Patch request = service
      .customers()
      .configurations()
      .patch(targetConfiguration.getName(), configuration);
request.setUpdateMask("isDefault");
Configuration results = request.execute();

.নেট

// Send minimal data with the request. Just the 2 required fields.
// targetConfiguration is an existing configuration that we want to make the default.
Configuration configuration = new Configuration
{
    IsDefault = true,
    ConfigurationId = targetConfiguration.ConfigurationId,
};

// Call the API, including the FieldMask to avoid setting other fields to null.
var request = service.Customers.Configurations.Patch(configuration,
                                                     targetConfiguration.Name);
request.UpdateMask = "IsDefault";
Configuration results = request.Execute();

পাইথন

# Send minimal data with the request. Just the 2 required fields.
# target_configuration is an existing configuration we'll make the default.
configuration = {
    'isDefault': True,
    'configurationId': target_configuration['configurationId']}

# Call the API, including the FieldMask to avoid setting other fields to null.
response = service.customers().configurations().patch(
    name=target_configuration['name'],
    body=configuration, updateMask='isDefault').execute()

শুধুমাত্র একটি ডিফল্ট কনফিগারেশন হতে পারে। একটি নতুন ডিফল্ট কনফিগারেশন তৈরি করা, একটি পূর্ববর্তী কনফিগারেশনের isDefault ক্ষেত্রটিকে false এ সেট করে। isDefault ক্ষেত্রে সঠিক মান দেখতে আপনাকে যেকোন ক্যাশে করা Configuration দৃষ্টান্ত রিফ্রেশ করতে হতে পারে।

গাইড ডিভাইস ব্যবহারকারী

জিরো-টাচ কনফিগারেশন ব্যবহারকারীদের সাহায্য করার জন্য ডিভাইস সেটআপ উইজার্ডে কাস্টমাইজড ব্যবহারকারী নির্দেশিকা প্রদর্শন করে। কনফিগারেশনে ডিভাইসটি পরিচালনা করে এমন সংস্থার নামের সাথে আপনাকে একটি যোগাযোগের টেলিফোন নম্বর এবং ইমেল ঠিকানা অন্তর্ভুক্ত করতে হবে। একজন ব্যবহারকারীর ডিভাইসে কী ঘটছে সে সম্পর্কে আরও বিশদ বিবরণ দিতে আমরা customMessage ক্ষেত্রে এক বা দুটি বাক্য অন্তর্ভুক্ত করার পরামর্শ দিই।

কারণ ব্যবহারকারী তার সেট আপ করা ডিভাইস থেকে কল বা ইমেল করতে সক্ষম হবে না, তথ্যের দিকে নজর দেওয়া সহজ করতে টেলিফোন নম্বর এবং ইমেল ঠিকানা ফর্ম্যাট করুন৷

ডিভাইস

রিসেলাররা ডিভাইস তৈরি করে যখন কোনো গ্রাহক জিরো-টাচ এনরোলমেন্টের জন্য তাদের ক্রয় করে—আইটি অ্যাডমিনরা ডিভাইস তৈরি করতে পারে না। ডিভাইসের সাথে কাজ করতে, Device API রিসোর্সে কল পদ্ধতি। আপনি যদি ডিভাইসগুলি অনুসন্ধান করতে চান তবে সমস্ত ডিভাইসের তালিকা করুন এবং আপনার অ্যাপে স্থানীয়ভাবে প্রতিটি ব্যাচ ফিল্টার করুন। একটি উদাহরণের জন্য, নীচে পৃষ্ঠাযুক্ত ফলাফল দেখুন।

ডিভাইস কনফিগার করুন

একটি ডিভাইসে একটি কনফিগারেশন প্রয়োগ করা ডিভাইসটিকে জিরো-টাচ তালিকাভুক্তির জন্য নিবন্ধিত করে। একটি কনফিগারেশন প্রয়োগ করতে, customers.devices.applyConfiguration কল করুন। একটি কনফিগারেশন প্রয়োগ করার পরে, ডিভাইসটি স্বয়ংক্রিয়ভাবে প্রথম বুট বা পরবর্তী ফ্যাক্টরি রিসেট করার সময় নিজেই ব্যবস্থা করে। নীচের উদাহরণটি দেখায় যে আপনি কীভাবে ডিভাইসগুলির একটি সংগ্রহে একটি কনফিগারেশন প্রয়োগ করতে পারেন:

জাভা

List<Device> devices = getDevicesToConfigure(service);
Configuration configurationToApply = getConfigurationToApply(service);

// Loop through the collection and apply the configuration to each device. This might
// take some time if the collection contains many devices.
for (Device device : devices) {
    System.out.println(device.getDeviceIdentifier().getImei());

    // Wrap the device ID in a DeviceReference.
    DeviceReference deviceRef = new DeviceReference();
    deviceRef.setDeviceId(device.getDeviceId());

    // Build and send the request to the API.
    CustomerApplyConfigurationRequest body = new CustomerApplyConfigurationRequest();
    body.setConfiguration(configurationToApply.getName());
    body.setDevice(deviceRef);

    AndroidProvisioningPartner.Customers.Devices.ApplyConfiguration request = service
          .customers()
          .devices()
          .applyConfiguration(customerAccount, body);
    request.execute();
}

.নেট

IList<Device> devices = GetDevicesToConfigure(service);
Configuration configurationToApply = GetConfigurationToApply(service);

// Loop through the collection and apply the configuration to each device. This might
// take some time if the collection contains many devices.
foreach (Device device in devices)
{
    Console.WriteLine(device.DeviceIdentifier.Imei);

    // Wrap the device ID in a DeviceReference.
    var deviceRef = new DeviceReference
    {
        DeviceId = device.DeviceId
    };

    // Build and send the request to the API.
    CustomerApplyConfigurationRequest body = new CustomerApplyConfigurationRequest
    {
        Configuration = configurationToApply.Name,
        Device = deviceRef
    };
    var request = service.Customers.Devices.ApplyConfiguration(body,
                                                               customerAccount);
    request.Execute();
}

পাইথন

devices = get_devices_to_configure(service)
configuration = get_configuration_to_apply(service)

# Loop through the collection and apply the configuration to each device.
# This might take some time if the collection contains many devices.
for device in devices:
  print(device['deviceIdentifier']['imei'])

  # Wrap the device ID in a DeviceReference.
  device_ref = {'deviceId': device['deviceId']}

  # Build and send the request to the API.
  body = {'configuration': configuration['name'], 'device': device_ref}
  service.customers().devices().applyConfiguration(
      parent=customer_account, body=body).execute()

একটি ডিভাইস থেকে কনফিগারেশন সরাতে, customers.devices.removeConfiguration কল করুন। ডিভাইসটি ফ্যাক্টরি রিসেট করার পরে পরিবর্তনটি কার্যকর হয়।

ডিভাইসগুলি দাবিমুক্ত করুন

আইটি অ্যাডমিনরা একটি ডিভাইসকে জিরো-টাচ নথিভুক্তি থেকে সরিয়ে দেওয়ার জন্য দাবিমুক্ত করতে পারেন। একজন আইটি প্রশাসক এমন একটি ডিভাইস দাবি করতে পারেন যা তারা অন্য অ্যাকাউন্টে স্থানান্তরিত করতে, বিক্রি করতে বা রিসেলারের কাছে ফিরে যেতে চান। একটি প্রতিষ্ঠান থেকে একটি ডিভাইস দাবিমুক্ত করতে customers.devices.unclaim পদ্ধতিতে কল করুন।

নীচের উদাহরণটি দেখায় কিভাবে একটি IMEI নম্বর এবং প্রস্তুতকারকের নাম থেকে একটি ডিভাইস দাবিমুক্ত করতে হয়:

জাভা

// Wrap the hardware ID and manufacturer values in a DeviceIdentifier.
// Then wrap the DeviceIdentifier in a DeviceReference.
DeviceIdentifier identifier = new DeviceIdentifier();
identifier.setImei("123456789012347");
identifier.setManufacturer("Google");
DeviceReference reference = new DeviceReference();
reference.setDeviceIdentifier(identifier);

// Create the body of the request.
CustomerUnclaimDeviceRequest body = new CustomerUnclaimDeviceRequest();
body.setDevice(reference);

// Call the API method to unclaim the device from the organization.
service.customers().devices().unclaim(customerAccount, body).execute();

.নেট

// Wrap the hardware ID and manufacturer values in a DeviceIdentifier.
// Then wrap the DeviceIdentifier in a DeviceReference.
DeviceIdentifier identifier = new DeviceIdentifier
{
    Imei = "123456789012347",
    Manufacturer = "Google"
};
DeviceReference reference = new DeviceReference();
reference.DeviceIdentifier = identifier;

// Create the body of the request.
CustomerUnclaimDeviceRequest body = new CustomerUnclaimDeviceRequest();
body.Device = reference;

// Call the API method to unclaim the device from the organization.
service.Customers.Devices.Unclaim(body, customerAccount).Execute();

পাইথন

# Wrap the hardware ID and manufacturer values in a DeviceIdentifier.
# Then wrap the DeviceIdentifier in a DeviceReference.
identifier = {'imei': '123456789012347', 'manufacturer': 'Google'}
reference = {'deviceIdentifier': identifier}

# Create the body of the request.
body = {'device': reference}

# Call the API method to unclaim the device from the organization.
service.customers().devices().unclaim(
    parent=customer_account, body=body).execute()

ডিভাইস মেটাডেটা

একজন আইটি প্রশাসক রিসেলার দ্বারা ডিভাইসের সাথে সংযুক্ত মেটাডেটা দেখতে পারেন৷ আইটি অ্যাডমিনদের ডিভাইস শনাক্ত করতে সাহায্য করতে আপনার অ্যাপে এই ডিভাইসের মেটাডেটা দেখান।

আপনি যে মেটাডেটা দেখতে পারেন সে সম্পর্কে আরও জানতে, রিসেলারদের জন্য ডিভাইস মেটাডেটা গাইড পড়ুন।

পৃষ্ঠাযুক্ত ফলাফল

customers.devices.list API পদ্ধতিটি ডিভাইসের অনেক বড় তালিকা ফেরত দিতে পারে। প্রতিক্রিয়ার আকার কমাতে, এই এবং অন্যান্য API পদ্ধতিগুলি (যেমন customers.list ) পৃষ্ঠাযুক্ত ফলাফলগুলিকে সমর্থন করে৷ পৃষ্ঠাযুক্ত ফলাফলের সাথে, আপনার অ্যাপ্লিকেশন পুনরাবৃত্তিমূলকভাবে একটি সময়ে একটি পৃষ্ঠার বড় তালিকার অনুরোধ এবং প্রক্রিয়া করতে পারে।

API পদ্ধতিতে কল করার পরে, প্রতিক্রিয়াটি nextPageToken জন্য একটি মান অন্তর্ভুক্ত করে কিনা তা পরীক্ষা করে দেখুন। nextPageToken null না হলে, আপনার অ্যাপটি আবার পদ্ধতিতে কল করে ডিভাইসের অন্য পৃষ্ঠা আনতে এটি ব্যবহার করতে পারে। আপনাকে pageSize প্যারামিটারে ডিভাইসের সংখ্যার জন্য একটি উচ্চ সীমা সেট করতে হবে। nextPageToken null হলে, আপনার অ্যাপ শেষ পৃষ্ঠার জন্য অনুরোধ করেছে।

নীচের উদাহরণ পদ্ধতিটি দেখায় যে কীভাবে আপনার অ্যাপটি একবারে একটি পৃষ্ঠার ডিভাইসগুলির একটি তালিকা প্রিন্ট করতে পারে:

জাভা

private void printDevices(AndroidProvisioningPartner service, String customerAccount,
      String pageToken) throws IOException {

    // Call the API to get a page of Devices. Send a page token from the method argument.
    // If the page token is null, the API returns the first page.
    AndroidProvisioningPartner.Customers.Devices.List request =
          service.customers().devices().list(customerAccount);
    request.setPageSize(50L);
    request.setPageToken(pageToken);
    CustomerListDevicesResponse response = request.execute();

    // Print the devices included in this page of results.
    for (Device device : response.getDevices()) {
        System.out.format("Device: %s\n", device.getName());
    }
    System.out.println("---");

    // Check to see if another page of devices is available. If yes, fetch & print the devices.
    if (response.getNextPageToken() != null) {
        this.printDevices(service, customerAccount, response.getNextPageToken());
    }
}

.নেট

private void PrintDevices(AndroidProvisioningPartnerService service, String customerAccount,
                          String pageToken)
{
    // Call the API to get a page of Devices. Send a page token from the method argument.
    // If the page token is null, the API returns the first page.
    var request = service.Customers.Devices.List(customerAccount);
    request.PageSize = 50;
    request.PageToken = pageToken;
    var response = request.Execute();

    // Print the devices included in this page of results.
    foreach (Device device in response.Devices)
    {
        Console.WriteLine("Device: {0}", device.Name);
    }
    Console.WriteLine("---");

    // Check to see if another page of devices is available. If yes, fetch and print the devices.
    if (response.NextPageToken != null)
    {
        this.PrintDevices(service, customerAccount, response.NextPageToken);
    }
}

পাইথন

def print_devices(service, customer_account, page_token):
  """Demonstrates how to loop through paginated lists of devices."""

  # Call the API to get a page of Devices. Send a page token from the method
  # argument. If the page token is None, the API returns the first page.
  response = service.customers().devices().list(
      parent=customer_account, pageSize=50, pageToken=page_token).execute()

  # Print the devices included in this page of results.
  for device in response['devices']:
    print('Device: {0}'.format(device['name']))
  print('---')

  # Check to see if another page of devices is available. If yes,
  # fetch and print the devices.
  if 'nextPageToken' in response:
    print_devices(service, customer_account, response['nextPageToken'])

এবার শুরু করা যাক

এর পরে, অনুমোদনে API কলগুলিকে কীভাবে অনুমোদন করতে হয় তা পড়ুন। আপনি যদি API গুলি অন্বেষণ করতে চান, তাহলে Java , .NET , এবং Python- এর জন্য কুইকস্টার্ট গাইডগুলি একবার দেখুন৷ আপনি এপিআই কলের উদাহরণ দেখতে একটি কোলাব ব্যবহার করতে পারেন এবং নিজে এপিআই কল করার বিষয়ে পরীক্ষা করতে পারেন।