
September 2008
Pengantar
Ini adalah saat yang menarik bagi developer. Kami mulai melihat sejumlah standar terbuka diadopsi di seluruh web, dan seperti yang Anda ketahui, Google selalu menjadi penggemar berat standar dan mendukung komunitas open source.
Baru-baru ini, semua Google Data API mengadopsi dukungan untuk OAuth, sebuah protokol terbuka yang bertujuan untuk menstandardisasi cara aplikasi desktop dan web mengakses data pribadi pengguna. OAuth menyediakan cara untuk melakukan autentikasi API dengan cara yang standar dan aman. Sebagai programmer, kita diajari untuk menggunakan kembali kode jika memungkinkan. OAuth akan membantu developer mengurangi jumlah kode duplikat yang mereka tulis dan mempermudah pembuatan alat yang berfungsi dengan beberapa layanan dari berbagai penyedia.
Audiens
Artikel ini mengasumsikan bahwa Anda sudah memahami satu atau beberapa Google Data API, tetapi belum tentu konsep di balik OAuth. Jika Anda baru memulai, atau hanya ingin tahu tentang OAuth, Anda berada di tempat yang tepat. Artikel ini akan memberi Anda dasar-dasar konsep tersebut. Saya juga akan membahas detail implementasi OAuth Google.
Dokumen ini juga ditujukan bagi developer yang sudah terbiasa menggunakan AuthSub, terutama dalam mode terdaftar dengan keamanan yang ditingkatkan. Seiring berjalannya waktu, kami akan mencoba menyoroti persamaan dan perbedaan antara kedua protokol tersebut. Jika memiliki aplikasi yang menggunakan AuthSub, Anda dapat menggunakan informasi ini untuk bermigrasi ke OAuth, yang merupakan protokol yang lebih terbuka dan modern.
Sedikit terminologi
Memahami OAuth adalah tentang memahami terminologinya. Spesifikasi OAuth dan dokumentasi Autentikasi OAuth untuk Aplikasi Web Google sangat mengandalkan definisi tertentu, jadi mari kita perjelas arti setiap definisi dalam konteks implementasi OAuth Google.
- "OAuth dance"
Istilah tidak resmi saya untuk mendeskripsikan proses autentikasi/otorisasi OAuth lengkap.
- (OAuth) Meminta token
Token awal yang memberi tahu Google bahwa aplikasi Anda meminta akses ke salah satu Google Data API. Langkah kedua dari proses OAuth adalah pengguna memberikan akses ke data mereka secara manual. Jika langkah ini berhasil, token permintaan akan diizinkan.
- (OAuth) Token akses
Langkah terakhir dalam proses ini adalah menukar token permintaan yang diberi otorisasi dengan token akses. Setelah aplikasi Anda memiliki token ini, pengguna tidak perlu melalui proses OAuth lagi, kecuali jika token dicabut.
Kemiripan dengan AuthSub:
Token akses OAuth sama dengan token sesi AuthSub yang aman. - Endpoint (OAuth)
Ini adalah URI yang diperlukan untuk mengautentikasi aplikasi dan mendapatkan token akses. Ada tiga total - satu untuk setiap langkah proses OAuth. Endpoint OAuth Google adalah:
Mendapatkan token permintaan: https://www.google.com/accounts/OAuthGetRequestToken
Beri otorisasi token permintaan: https://www.google.com/accounts/OAuthAuthorizeToken
Mengupgrade ke token akses: https://www.google.com/accounts/OAuthGetAccessToken
Kemiripan dengan AuthSub:
Penukaran token permintaan yang diberi otorisasi dengan token akses serupa dengan mengupgrade token AuthSub sekali pakai menjadi token sesi yang aktif dalam jangka panjang dihttps://www.google.com/accounts/AuthSubRequestToken
danhttps://www.google.com/accounts/AuthSubSessionToken
. Perbedaannya adalah AuthSub tidak memiliki konsep token permintaan awal. Sebagai gantinya, pengguna memulai proses token dari halaman otorisasiAuthSubRequestToken
. - Penyedia Layanan (OAuth)
Dalam kasus Google Data API, penyedia ini adalah Google. Secara umum, penyedia layanan digunakan untuk mendeskripsikan situs atau layanan web yang menyediakan endpoint OAuth. Contoh lain penyedia layanan OAuth adalah MySpace.
- Konsumen (OAuth)
Program yang meminta izin untuk mengakses data pengguna (yaitu aplikasi Anda). Protokol OAuth bersifat fleksibel karena memungkinkan berbagai jenis klien (web, terinstal, desktop, seluler).
Catatan: Meskipun protokol OAuth mendukung kasus penggunaan aplikasi desktop/terinstal, Google hanya mendukung OAuth untuk aplikasi web.
Memulai
Pendaftaran
Ada sedikit penyiapan sebelum Anda dapat mulai menggunakan OAuth dengan Google Data API. Karena semua permintaan OAuth harus ditandatangani secara digital, Anda harus mendaftarkan domain dan mengupload sertifikat publik ke Google terlebih dahulu. Lihat Pendaftaran untuk Aplikasi Berbasis Web dan Membuat kunci dan sertifikat untuk digunakan dengan mode terdaftar untuk mengetahui informasi selengkapnya tentang cara melakukannya.
Menandatangani permintaan
Setelah domain Anda terdaftar, Anda siap untuk mulai menandatangani permintaan. Salah satu konsep OAuth yang paling sulit adalah cara membuat oauth_signature
dengan benar dan gagasan tentang string dasar tanda tangan. String dasar
adalah data yang Anda tandatangani dengan kunci pribadi Anda (menggunakan RSA_SHA1
). Hasilnya adalah nilai yang Anda tetapkan untuk oauth_signature
.
Contoh permintaan
GET
daftar Google Kalender pengguna di http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime
Format string dasar | base_string = http-method&base-http-request-url&normalized-string-of-oauth_parameters |
---|---|
Contoh string dasar | GET&http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull&oauth_consumer_key%3Dexample.com%26oauth_nonce%3D4572616e48616d6d%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D137131200%26oauth_token%3D1%252Fab3cd9j4ks73hf7g%26oauth_version%3D1.0%26orderby%3Dstarttime |
Contoh permintaan HTTP |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: OAuth oauth_token="1%2Fab3cd9j4ks73hf7g", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9AvZbTSMK%2FPY%3D...", oauth_consumer_key="example.com", oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d", oauth_version="1.0" |
Catatan: Ini hanya dimaksudkan sebagai representasi. oauth_signature
Anda akan jauh lebih panjang.
Catatan tentang string dasar:
- Parameter kueri
orderby=starttime
diurutkan bersama dengan parameteroauth_*
lainnya dalam pengurutan nilai byte leksikografis. - String ini juga tidak berisi karakter '?'.
- Bagian
base-http-request-url
hanya berisi URL dasar yang dienkode dengan URL:http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull
. oauth_token
dienkode URL dua kali.
Catatan tentang header Authorization
:
- Urutan parameter
oauth_*
tidak menjadi masalah di headerAuthorization
. - Header tidak menyertakan
orderby=starttime
seperti yang dilakukan string dasar. Parameter kueri tersebut dipertahankan sebagai bagian dari URL permintaan.
Untuk mengetahui informasi selengkapnya tentang penandatanganan permintaan menggunakan OAuth, lihat Menandatangani Permintaan OAuth.
Perbedaan dari AuthSub:
Sebagai perbandingan, berikut contoh yang sama menggunakan AuthSub aman:
Format string dasar | base_string = http-method http-request-URL timestamp nonce |
---|---|
Contoh string dasar |
GET http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull%3Forderby%3Dstarttime 137131200 4572616e48616d6d |
Contoh permintaan HTTP |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: AuthSub token="GD32CMCL25aZ-v____8B" data="GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime 137131200 4572616e48616d6d" sig="MCwCFrV93K4agg==..." sigalg="rsa-sha1" |
Untuk mengetahui informasi selengkapnya tentang penandatanganan permintaan menggunakan AuthSub, lihat Menandatangani Permintaan AuthSub.
Alat OAuth Playground
Tujuan
Beberapa pengguna menyarankan bahwa OAuth memiliki kurva pembelajaran yang tinggi. Dibandingkan dengan API autentikasi Google lainnya, saya setuju. Keuntungan OAuth akan terlihat saat Anda memperluas aplikasi untuk menggunakan layanan lain (non-Google). Menulis satu bagian kode autentikasi yang berfungsi di berbagai penyedia layanan, dan API mereka, terdengar cukup bagus bagi saya. Anda akan berterima kasih pada diri sendiri nanti karena telah mempelajari protokol ini sekarang.
OAuth Playground adalah alat yang saya buat untuk membantu developer mengatasi masalah OAuth mereka. Anda dapat menggunakan Playground untuk membantu men-debug masalah, memeriksa penerapan Anda sendiri, atau bereksperimen dengan Google Data API.
Apa fungsinya?
- Mengilustrasikan alur autentikasi OAuth: mengambil token permintaan, memberi otorisasi token, dan mengupgradenya ke token akses.
- Menampilkan string dasar tanda tangan yang benar untuk setiap permintaan.
- Menampilkan header
Authorization
yang benar untuk setiap permintaan. - Menunjukkan cara menggunakan
oauth_token
untuk berinteraksi dengan feed Data Google yang diautentikasi. Anda dapatGET
/POST
/PUT
/DELETE
data. - Lihat feed yang diautentikasi langsung di browser Anda.
- Memungkinkan Anda menguji
oauth_consumer_key
Anda sendiri (domain terdaftar) dan kunci pribadi. - Temukan layanan feed Data Google yang tersedia untuk
oauth_token
Anda.
Jalankan Demo
Langkah 1: Pilih CakupanPertama, tentukan API mana yang ingin Anda gunakan dengan memilih satu atau beberapa cakupan. Dalam demonstrasi ini, saya meminta token yang akan berfungsi dengan Blogger dan Google Kontak. Kemiripan dengan AuthSub: |
![]() |
Langkah 2: Ubah Parameter dan Setelan OAuthUntuk saat ini, jangan ubah setelan apa pun di kotak "Modify the OAuth Parameters". Selanjutnya, Anda dapat melakukan pengujian dengan kunci pribadi Anda sendiri dengan mengubah
Catatan: Selain Perbedaan dari AuthSub: |
![]() |
Langkah 3-5: Dapatkan token aksesAda tiga langkah untuk mendapatkan token akses OAuth. Langkah pertama adalah mengambil token permintaan. Hal ini memungkinkan Google mengetahui bahwa aplikasi Anda memulai proses OAuth. Pertama, klik tombol "Minta token" di kotak "Dapatkan Token". Kolom tertentu akan diisi dengan data.
|
![]() ![]() |
Selanjutnya, klik tombol "Authorize" di kotak "Get the token". Di halaman otorisasi ini, klik tombol "Grant Access" untuk mengizinkan token permintaan dan dialihkan kembali ke OAuth Playground. Kesamaan dengan AuthSub: Perbedaan dari AuthSub: Tips: Menentukan URL |
![]() |
Terakhir, klik tombol "Access token" di kotak "Get the Token". Tindakan ini mengupgrade token permintaan yang diberi otorisasi (seperti yang ditunjukkan oleh label "access token" berwarna merah). Jika Anda ingin mengambil token baru, klik "mulai lagi" untuk memulai ulang proses OAuth. Sekarang kita bisa melakukan sesuatu yang menarik. |
![]() |
Menggunakan token akses
Sekarang Anda siap untuk mengueri feed, menyisipkan, memperbarui, atau menghapus data. Berhati-hatilah saat melakukan tiga metode HTTP terakhir ini karena Anda sedang bekerja dengan data asli Anda.
Tips: Untuk menemukan feed yang tersedia untuk token akses Anda, klik tombol "available feeds".
Berikut contoh kueri: GET http://www.blogger.com/feeds/1982051675575479214/posts/default?max-results=3

Contoh ini menampilkan tidak lebih dari tiga postingan di blog tertentu. Anda juga dapat melihat feed/entri yang ditampilkan langsung di browser dengan mengklik link "Lihat di browser" di bawah area yang disorot sintaksisnya.
Contoh: Cara memperbarui postingan
- Temukan elemen
<link>
dengan rel="edit" di postingan yang ingin Anda perbarui. Tampilannya akan terlihat seperti:<link rel="edit" href="http://www.blogger.com/feeds/1982051675575479214/posts/default/8138973184593279875"/>
Tempelkan URL href di input "Masukkan feed Data Google".
- Salin XML entri yang ada dengan mengklik "lihat biasa" di bagian atas panel yang disorot sintaksisnya. Hanya salin isi respons, bukan header.
- Ubah dropdown metode HTTP menjadi
PUT
. - Klik "enter post data" di bawah dropdown tersebut dan tempelkan XML
<entry>
ke dalam pop-up. - Klik tombol "execute".
Server akan merespons dengan 200 OK
.
Tips: Daripada menyalin link edit
secara manual, hapus centang pada kotak 'Sorotan Sintaksis?'. Setelah kueri, Anda dapat mengklik link dalam isi respons XML.
Kesimpulan
Teknologi seperti AtomPub/Atom Publishing Protocol (protokol dasar Google Data API) dan OAuth membantu mendorong kemajuan web. Seiring dengan semakin banyaknya situs yang mulai menerapkan standar ini, kita sebagai developer akan diuntungkan. Membuat aplikasi unggulan tiba-tiba menjadi tidak terlalu sulit.
Jika ada pertanyaan atau komentar tentang OAuth Playground, atau penggunaan OAuth dengan Google API, kunjungi kami di Forum Dukungan G Suite API dan Marketplace API.