Peringatan: Dokumen ini tidak digunakan lagi. Untuk informasi tentang cara memberikan otorisasi ke aplikasi Android menggunakan OAuth 2.0, lihat dokumentasi Otorisasi Layanan Google Play Android.
Dokumen ini menjelaskan cara menggunakan Tasks API dengan OAuth 2.0 di Android. Artikel ini menjelaskan mekanisme otorisasi untuk mendapatkan akses ke Google Tasks pengguna dan cara Anda dapat memiliki Objek layanan Tasks API yang siap digunakan di aplikasi Android.
Agar aplikasi Android Anda dapat menggunakan Tasks API, beberapa langkah diperlukan, Anda harus:
- Memilih Akun Google pengguna
- Mendapatkan token akses OAuth 2.0 dari AccountManager untuk Task API
- Mengidentifikasi project dan menyiapkan Objek layanan Tasks
- Melakukan panggilan ke Tasks API
Mengimpor library klien Google
Contoh yang akan Anda temukan dalam dokumen ini menggunakan library klien Google API untuk Java. Anda harus menambahkan jar berikut ke aplikasi Android. Untuk melakukannya, tempatkan jar yang tercantum di bawah dalam folder /assets di root aplikasi Android Anda. Periksa juga versi baru seiring dokumen ini menjadi lebih lama.
Impor jar library klien Google API dan ekstensi Android-nya (semua bagian dari 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
Impor jar khusus Tasks:
Impor dependensi (semua bagian dari google-api-java-client-1.4.1-beta.zip):
- commons-codec-1.3.jar
- gson-1.6.jar
- guava-r09.jar
- httpclient-4.0.3.jar
- httpcore-4.0.1.jar
- jackson-core-asl-1.6.7.jar
- jsr305-1.3.9.jar
Akun Google di Android
Sejak Android 2.0, AccountManager mengelola akun yang telah Anda daftarkan di lingkungan Anda, yaitu akun yang tercantum di bagian Setelan > Akun & sinkronisasi. Secara khusus, layanan ini menangani alur otorisasi dan dapat membuat token otorisasi yang diperlukan untuk mengakses data menggunakan API.

Agar dapat menggunakan AccountManager untuk mendapatkan akun dan meminta token otorisasi, Anda harus menambahkan izin berikut di manifes aplikasi Android:
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" />
Anda dapat menggunakan AccountManager untuk mendapatkan Akun Google yang ingin Anda gunakan untuk mengakses Tasks. AccountManager tidak hanya mengelola Akun Google, tetapi juga akun dari vendor lain. Oleh karena itu, Anda harus meminta Akun Google secara khusus menggunakan kode di bawah ini:
AccountManager accountManager = AccountManager.get(activity); Account[] accounts = accountManager.getAccountsByType("com.google");
Atau, library klien Google API untuk Java dilengkapi dengan GoogleAccountManager yang hanya menangani Akun Google:
GoogleAccountManager googleAccountManager = new GoogleAccountManager(activity); Account[] accounts = googleAccountManager.getAccounts();
Jika ada lebih dari satu Akun Google yang tersedia di perangkat Android, Anda harus meminta pengguna untuk memilih akun yang ingin digunakan dengan dialog yang mungkin terlihat seperti ini:

Anda dapat membuat dialog tersebut menggunakan kode switch/case berikut dalam metode onCreateDialog aktivitas Anda:
@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; }
Memanggil showDialog(DIALOG_ACCOUNTS) akan menampilkan dialog pemilih akun.
Alur otorisasi Google API di Android
Setelah pengguna memilih akun, kita dapat meminta AccountManager untuk menerbitkan token akses OAuth 2.0 untuk Task API. Hal ini dilakukan dengan memanggil metode AccountManager.getAuthToken(). Selama panggilan AccountManager.getAuthToken(), AccountManager akan menangani kontak ke endpoint otorisasi Google API. Setelah AccountManager mengambil token otorisasi, AccountManagerCallback yang telah Anda tentukan dalam panggilan metode akan dijalankan:
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);
Seperti yang mungkin sudah Anda ketahui, AccountManager Android memiliki dukungan eksperimental untuk OAuth 2.0. Anda hanya perlu menambahkan awalan cakupan API yang ingin diakses dengan oauth2: saat menetapkan AUTH_TOKEN_TYPE. Jadi, untuk Tasks API, Anda dapat menggunakan:
String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/tasks";
Masalah saat menggunakan nilai di atas sebagai AUTH_TOKEN_TYPE adalah string oauth2:https://www.googleapis.com/auth/tasks akan ditampilkan dalam dialog otorisasi sebagai nama produk Google yang ingin Anda akses. Untuk mengatasi hal ini, alias AUTH_TOKEN_TYPE khusus — yang dapat dibaca manusia — tersedia untuk Tasks API. Keduanya setara dengan menggunakan cakupan OAuth 2.0. Misalnya, Anda dapat menggunakan:
String AUTH_TOKEN_TYPE = "Manage your tasks";
Anda juga dapat menggunakan alias AUTH_TOKEN_TYPE View your tasks yang setara dengan cakupan baca saja Tasks API: oauth2:https://www.googleapis.com/auth/tasks.readonly.
Selama panggilan AccountManager.getAuthToken(), AccountManager akan memeriksa apakah aplikasi Anda telah diberi otorisasi untuk mengakses Tasks API. Jika aplikasi Anda belum diotorisasi, Aktivitas akan dimulai oleh AccountManager yang menampilkan dialog otorisasi kepada pengguna sehingga mereka dapat Mengizinkan atau Menolak aplikasi Anda untuk menggunakan Tasks API di akun mereka.

Jika pengguna menolak akses aplikasi Anda ke Tasks API, OperationCanceledException akan ditampilkan selama panggilan future.getResult(). Anda harus menanganinya dengan baik, misalnya dengan meminta untuk memilih akun lagi atau menampilkan pesan dengan tombol untuk memberikan otorisasi akses lagi.
Mengidentifikasi aplikasi Anda dan menyiapkan Objek layanan Tasks API
Setelah aplikasi Anda memiliki otorisasi untuk mengakses Tasks API dan telah diberi token akses, Anda juga memerlukan Kunci API yang harus Anda dapatkan dari project di Konsol API Google karena wajib untuk melakukan panggilan Tasks API. Untuk melakukannya, ikuti langkah-langkah berikut:
- Membuat project atau menggunakan project yang sudah ada
- Aktifkan Tasks API di project Anda dengan mengalihkan tombol Tasks API ke AKTIF
- Kunci API dapat ditemukan di API Access > Simple API Access > API Key

Kunci API bersifat wajib karena mengidentifikasi aplikasi Anda, sehingga memungkinkan API untuk mengurangi kuota dan menggunakan aturan kuota yang ditentukan untuk project Anda. Anda perlu menentukan Kunci API di Objek layanan Tasks:
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 }
accessToken hanya valid selama jangka waktu tertentu, sehingga Anda harus mendapatkan token baru saat masa berlakunya habis. Ada 2 cara untuk menangani hal ini:
- Minta accessToken ke AccountManager setiap kali Anda membuat permintaan melalui API. Karena AccountManager meng-cache token, solusi ini dapat diterima.
- Terus gunakan accessToken Anda hingga Anda mendapatkan error 403, lalu minta token baru ke AccountManager.
Melakukan manipulasi Tugas melalui API
Pada tahap ini, Anda harus memiliki Objek layanan Tasks API yang telah disiapkan sepenuhnya dan dapat Anda gunakan untuk membuat kueri API sesuai dengan Panduan developer Tasks API, misalnya:
// Getting all the Task lists ListtaskLists = 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();
Jangan lupa untuk menambahkan izin guna mengakses Internet ke manifes aplikasi Android Anda. Jika tidak, permintaan di atas ke endpoint Tasks API akan gagal:
<uses-permission android:name="android.permission.INTERNET" />
Contoh aplikasi
Baru-baru ini kami menambahkan contoh baru ke repositori contoh Library Klien Google API untuk Java guna membantu Anda memulai Tasks API dan OAuth 2.0 di Android. Contoh ini adalah aplikasi Android sederhana tetapi berfungsi penuh yang meminta otorisasi untuk menggunakan Tasks API dan menampilkan tugas daftar tugas default di ListView.

Ikuti petunjuk ini untuk menjalankan contoh, dan jangan ragu untuk memposting masukan atau pertanyaan Anda ke Forum Google Tasks API.