Android এ Tasks API ব্যবহার করুন

সতর্কতা: এই দস্তাবেজটি বাতিল করা হয়েছে। OAuth 2.0 ব্যবহার করে Android অ্যাপ্লিকেশানগুলিকে অনুমোদন করার বিষয়ে তথ্যের জন্য অনুগ্রহ করে Android Play পরিষেবা অনুমোদন ডকুমেন্টেশন দেখুন৷

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

আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশানটি টাস্ক API ব্যবহার করার জন্য বেশ কয়েকটি পদক্ষেপের প্রয়োজন, আপনাকে এটি করতে হবে:

  1. ব্যবহারকারীর Google অ্যাকাউন্ট নির্বাচন করুন
  2. টাস্ক API-এর জন্য AccountManager থেকে একটি OAuth 2.0 অ্যাক্সেস টোকেন পান৷
  3. আপনার প্রকল্প সনাক্ত করুন এবং টাস্ক পরিষেবা সেট আপ করুন৷ অবজেক্ট
  4. টাস্ক API এ কল করুন

Google এর ক্লায়েন্ট লাইব্রেরি আমদানি করা হচ্ছে

আপনি এই নথিতে যে নমুনাগুলি পাবেন তা Java এর জন্য Google APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করে। আপনাকে আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনে নিম্নলিখিত জারগুলি যুক্ত করতে হবে, এটি করতে, আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশনের মূলে /assets ফোল্ডারে নীচে তালিকাভুক্ত জারগুলি রাখুন৷ এই ডকুমেন্টটি পুরানো হওয়ার সাথে সাথে নতুন সংস্করণগুলির জন্যও পরীক্ষা করুন৷

Google APIs ক্লায়েন্ট লাইব্রেরি জার এবং এর অ্যান্ড্রয়েড এক্সটেনশনগুলি আমদানি করুন ( google-api-java-client-1.4.1-beta.zip এর সমস্ত অংশ):

  • google-api-client-1.4.1-beta.jar
  • google-api-client-extensions-android2-1.4.1-beta.jar
  • google-api-client-googleapis-1.4.1-beta.jar
  • google-api-client-googleapis-extensions-android2-1.4.1-beta.jar

টাস্ক নির্দিষ্ট জার আমদানি করুন:

আমদানি নির্ভরতা ( google-api-java-client-1.4.1-beta.zip এর সমস্ত অংশ):

  • commons-codec-1.3.jar
  • gson-1.6.jar
  • পেয়ারা-r09.jar
  • httpclient-4.0.3.jar
  • httpcore-4.0.1.jar
  • jackson-core-asl-1.6.7.jar
  • jsr305-1.3.9.jar

অ্যান্ড্রয়েডে গুগল অ্যাকাউন্ট

অ্যান্ড্রয়েড 2.0 থেকে, অ্যাকাউন্ট ম্যানেজার আপনার পরিবেশে নিবন্ধিত অ্যাকাউন্টগুলি পরিচালনা করে, যেগুলি সেটিংস > অ্যাকাউন্ট এবং সিঙ্কের অধীনে তালিকাভুক্ত। বিশেষত, এটি অনুমোদনের প্রবাহ পরিচালনা করে এবং অনুমোদন টোকেন তৈরি করতে পারে যা API ব্যবহার করে ডেটা অ্যাক্সেস করার জন্য প্রয়োজন।

আপনার অ্যান্ড্রয়েড পরিবেশে নিবন্ধিত অ্যাকাউন্ট
আপনার অ্যান্ড্রয়েড পরিবেশে নিবন্ধিত অ্যাকাউন্ট

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

<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />

আপনি Google অ্যাকাউন্টটি পেতে অ্যাকাউন্ট ম্যানেজার ব্যবহার করতে পারেন যার জন্য আপনি কার্যগুলি অ্যাক্সেস করতে চান৷ অ্যাকাউন্ট ম্যানেজার শুধুমাত্র Google অ্যাকাউন্টগুলিই পরিচালনা করে না বরং অন্যান্য বিক্রেতাদের অ্যাকাউন্টগুলিও পরিচালনা করে৷ তাই নিচের কোডটি ব্যবহার করে আপনাকে বিশেষভাবে Google অ্যাকাউন্টের জন্য জিজ্ঞাসা করতে হবে:

AccountManager accountManager = AccountManager.get(activity);
Account[] accounts = accountManager.getAccountsByType("com.google");

বিকল্পভাবে জাভার জন্য Google APIs ক্লায়েন্ট লাইব্রেরি একটি GoogleAccountManager এর সাথে আসে যা শুধুমাত্র Google অ্যাকাউন্ট পরিচালনা করে:

GoogleAccountManager googleAccountManager = new GoogleAccountManager(activity);
Account[] accounts = googleAccountManager.getAccounts();

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

অ্যাকাউন্ট ডায়ালগ বেছে নিন
অ্যাকাউন্ট ডায়ালগ বেছে নিন

আপনি আপনার কার্যকলাপের onCreateDialog পদ্ধতিতে নিম্নলিখিত সুইচ/কেস কোড ব্যবহার করে এই জাতীয় ডায়ালগ তৈরি করতে পারেন:

@Override
protected Dialog onCreateDialog(int id) {
  switch (id) {
    case DIALOG_ACCOUNTS:
      AlertDialog.Builder builder = new AlertDialog.Builder(this);
      builder.setTitle("Select a Google account");
      final Account[] accounts = accountManager.getAccountsByType("com.google");
      final int size = accounts.length;
      String[] names = new String[[]size];
      for (int i = 0; i < size; i++) {
        names[[]i] = accounts[[]i].name;
      }
      builder.setItems(names, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          // Stuff to do when the account is selected by the user
          gotAccount(accounts[[]which]);
        }
      });
      return builder.create();
  }
  return null;
}

শোডায়ালগ (DIALOG_ACCOUNTS) কল করা অ্যাকাউন্ট চয়নকারী ডায়ালগ প্রদর্শন করবে।

অ্যান্ড্রয়েডে Google API-এর অনুমোদন প্রবাহ

এখন যেহেতু ব্যবহারকারী একটি অ্যাকাউন্ট বেছে নিয়েছে আমরা অ্যাকাউন্ট ম্যানেজারকে টাস্ক API-এর জন্য একটি OAuth 2.0 অ্যাক্সেস টোকেন ইস্যু করতে বলতে পারি। AccountManager.getAuthToken() পদ্ধতিতে কল করে এটি করা হয়। AccountManager.getAuthToken() কলের সময় AccountManager Google API-এর অনুমোদনের শেষ পয়েন্টের সাথে যোগাযোগ করার যত্ন নেবে। যখন অ্যাকাউন্ট ম্যানেজার অনুমোদন টোকেনটি পুনরুদ্ধার করবে তখন এটি অ্যাকাউন্ট ম্যানেজার কলব্যাক চালাবে যা আপনি পদ্ধতি কলে সংজ্ঞায়িত করেছেন:

manager.getAuthToken(account, AUTH_TOKEN_TYPE, null, activity, new AccountManagerCallback<Bundle>() {
    public void run(AccountManagerFuture<Bundle> future) {
      try {
        // If the user has authorized your application to use the tasks API
        // a token is available.
        String token = future.getResult().getString(AccountManager.KEY_AUTHTOKEN);
        // Now you can use the Tasks API...
        useTasksAPI(token);
      } catch (OperationCanceledException e) {
        // TODO: The user has denied you access to the API, you should handle that
      } catch (Exception e) {
        handleException(e);
      }
    }
  }, null);

আপনি ইতিমধ্যেই জানেন যে Android AccountManager-এর OAuth 2.0-এর জন্য পরীক্ষামূলক সমর্থন রয়েছে৷ AUTH_TOKEN_TYPE সেট করার সময় আপনি oauth2-এর সাথে যে API অ্যাক্সেস করতে চান তার স্কোপটি আপনাকে শুধু উপসর্গ করতে হবে। তাই টাস্ক API এর জন্য আপনি ব্যবহার করতে পারেন:

String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/tasks";

উপরের মানটিকে AUTH_TOKEN_TYPE হিসাবে ব্যবহার করার সময় সমস্যা হল যে স্ট্রিং oauth2:https://www.googleapis.com/auth/tasks আপনি যে Google পণ্য অ্যাক্সেস করতে চান তার নাম হিসাবে অনুমোদন ডায়ালগে প্রদর্শিত হবে। এটিকে ঘিরে কাজ করার জন্য, বিশেষ — মানব-পাঠযোগ্য — AUTH_TOKEN_TYPE উপনামগুলি কার্য API-এর জন্য বিদ্যমান। তারা OAuth 2.0 সুযোগ ব্যবহার করার সমতুল্য। উদাহরণস্বরূপ আপনি ব্যবহার করতে পারেন:

String AUTH_TOKEN_TYPE = "Manage your tasks";

এছাড়াও আপনি AUTH_TOKEN_TYPE alias ব্যবহার করতে পারেন আপনার কার্যগুলি দেখুন যা টাস্ক এপিআই রিড-অনলি স্কোপের সমতুল্য: oauth2:https://www.googleapis.com/auth/tasks.readonly

AccountManager.getAuthToken() কল করার সময় AccountManager চেক করবে যে আপনার অ্যাপ্লিকেশন টাস্ক এপিআই অ্যাক্সেস করার জন্য অনুমোদিত হয়েছে কিনা। যদি আপনার অ্যাপ্লিকেশনটি এখনও অনুমোদিত না হয়ে থাকে তাহলে অ্যাকাউন্ট ম্যানেজার দ্বারা একটি কার্যকলাপ শুরু হয় যা ব্যবহারকারীকে একটি অনুমোদন ডায়ালগ প্রদর্শন করে যাতে তারা তাদের অ্যাকাউন্টে টাস্ক API ব্যবহার করার জন্য আপনার অ্যাপ্লিকেশনটিকে অনুমতি দিতে বা অস্বীকার করতে পারে৷

অনুমোদন ডায়ালগ
অনুমোদন ডায়ালগ

ব্যবহারকারী যদি Tasks API-তে আপনার অ্যাপ্লিকেশন অ্যাক্সেস অস্বীকার করে, তাহলে future.getResult() কলের সময় একটি OperationCanceledException নিক্ষেপ করা হবে। আপনার এটিকে সুন্দরভাবে পরিচালনা করা উচিত উদাহরণস্বরূপ আবার অ্যাকাউন্টটি চয়ন করার জন্য জিজ্ঞাসা করে বা আবার অ্যাক্সেস অনুমোদন করার জন্য একটি বোতাম সহ একটি বার্তা প্রদর্শন করে৷

আপনার অ্যাপ্লিকেশন সনাক্ত করা এবং টাস্ক API পরিষেবা অবজেক্ট সেট আপ করা

এখন যেহেতু আপনার অ্যাপ্লিকেশনটির কার্য API অ্যাক্সেস করার অনুমোদন রয়েছে এবং এটিকে একটি অ্যাক্সেস টোকেন দেওয়া হয়েছে আপনার একটি API কী প্রয়োজন যা আপনাকে Google APIs কনসোলের একটি প্রকল্প থেকে পেতে হবে কারণ এটি টাস্ক API কল করার জন্য বাধ্যতামূলক৷ এটি করতে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি প্রকল্প তৈরি করুন বা বিদ্যমান একটি ব্যবহার করুন
  2. টাস্ক এপিআই স্যুইচ চালু করে টগল করে আপনার প্রোজেক্টে টাস্ক এপিআই সক্ষম করুন
  3. API কী API অ্যাক্সেস > সরল API অ্যাক্সেস > API কী -তে পাওয়া যাবে

APIs কনসোল থেকে API কী প্রাপ্ত করা হচ্ছে
APIs কনসোল থেকে API কী প্রাপ্ত করা হচ্ছে

API কী বাধ্যতামূলক কারণ এটি আপনার আবেদনকে শনাক্ত করে এবং তাই API-কে কোটা কাটাতে এবং আপনার প্রকল্পের জন্য সংজ্ঞায়িত কোটা নিয়মগুলি ব্যবহার করার অনুমতি দেয়৷ আপনাকে আপনার টাস্ক সার্ভিস অবজেক্টে API কী নির্দিষ্ট করতে হবে:

useTasksAPI(String accessToken) {
  // Setting up the Tasks API Service
  HttpTransport transport = AndroidHttp.newCompatibleTransport();
  AccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(accessToken);
  Tasks service = new Tasks(transport, accessProtectedResource, new JacksonFactory());
  service.accessKey = INSERT_YOUR_API_KEY;
  service.setApplicationName("Google-TasksSample/1.0");

  // TODO: now use the service to query the Tasks API
}

অ্যাক্সেস টোকেন শুধুমাত্র একটি নির্দিষ্ট সময়ের জন্য বৈধ, তাই এটির মেয়াদ শেষ হলে আপনাকে একটি নতুন পেতে হবে। এটি পরিচালনা করার 2 টি উপায় রয়েছে:

  • এপিআই-এর মাধ্যমে প্রতিবার অনুরোধ করার সময় অ্যাকাউন্ট ম্যানেজারে একটি অ্যাক্সেস টোকেনের অনুরোধ করুন। যেহেতু অ্যাকাউন্ট ম্যানেজার টোকেন ক্যাশ করে এই সমাধান গ্রহণযোগ্য।
  • আপনার অ্যাক্সেস টোকেন ব্যবহার করা চালিয়ে যান যতক্ষণ না আপনি একটি 403 ত্রুটি পান যেখানে আপনি অ্যাকাউন্ট ম্যানেজারে একটি নতুন টোকেন চান৷

এপিআই এর মাধ্যমে টাস্ক ম্যানিপুলেট করা

এই মুহুর্তে আপনার একটি সম্পূর্ণ সেট আপ টাস্ক এপিআই সার্ভিস অবজেক্ট থাকা উচিত যা আপনি টাস্ক এপিআই ডেভেলপারের গাইড অনুযায়ী API জিজ্ঞাসা করতে ব্যবহার করতে পারেন, উদাহরণস্বরূপ:

// Getting all the Task lists
List taskLists = service.tasklists.list().execute().items;

// Getting the list of tasks in the default task list
List tasks = service.tasks.list("@default").execute().items;

// Add a task to the default task list
Task task = new Task();
task.title = "New Task";
task.notes = "Please complete me";
task.due = "2010-10-15T12:00:00.000Z";
Task result = service.tasks.insert("@default", task).execute();

আপনার অ্যান্ড্রয়েড অ্যাপ্লিকেশন ম্যানিফেস্টে ইন্টারনেট অ্যাক্সেস করার অনুমতি যোগ করতে ভুলবেন না অন্যথায় টাস্ক API এন্ডপয়েন্টগুলিতে উপরের অনুরোধগুলি ব্যর্থ হবে:

<uses-permission android:name="android.permission.INTERNET" />

নমুনা আবেদন

Android এ Tasks API এবং OAuth 2.0 এর সাথে শুরু করতে আপনাকে সাহায্য করার জন্য আমরা সম্প্রতি Java নমুনা সংগ্রহস্থলের জন্য Google APIs ক্লায়েন্ট লাইব্রেরিতে একটি নতুন নমুনা যোগ করেছি। নমুনাটি একটি সহজ কিন্তু সম্পূর্ণরূপে কাজ করা অ্যান্ড্রয়েড অ্যাপ্লিকেশন যা Tasks API ব্যবহার করার জন্য অনুমোদনের অনুরোধ করে এবং একটি ListView-এ ডিফল্ট টাস্ক তালিকার কাজগুলি প্রদর্শন করে।

একটি ListView-এ ডিফল্ট কার্য তালিকায় কাজগুলি প্রদর্শন করা হচ্ছে
একটি ListView-এ ডিফল্ট কার্য তালিকায় কাজগুলি প্রদর্শন করা হচ্ছে

নমুনা চালানোর জন্য এই নির্দেশাবলী অনুসরণ করুন, এবং Google টাস্ক API ফোরামে আপনার প্রতিক্রিয়া বা প্রশ্ন পোস্ট করতে দ্বিধা করবেন না।