Beralih dari ClientLogin ke OAuth 2.0

Ikai Lan, YouTube Developer Relations – June 2013

YouTube API menggunakan OAuth 2.0 untuk mengizinkan permintaan pengguna. Kami sering ditanya apakah kami akan menambahkan dukungan untuk autentikasi ClientLogin atau hal serupa di YouTube API ke depannya. Namun, kami secara resmi tidak lagi menggunakan ClientLogin mulai 20 April 2012, dan tidak ada rencana untuk menambahkan mekanisme tersebut.

Ada banyak alasan mengapa kami yakin bahwa mendukung berbagai otorisasi otorisasi OAuth 2.0 lebih baik bagi pengguna YouTube daripada ClientLogin. Alur ini mendukung kasus penggunaan untuk aplikasi desktop, aplikasi khusus web, aplikasi seluler native, dan bahkan aplikasi yang berjalan pada perangkat seperti televisi yang tidak memiliki mekanisme input yang canggih, sesuatu yang sulit dilakukan menggunakan ClientLogin. Selain itu, kami mendapati bahwa ClientLogin menyebabkan lebih banyak masalah yang terjadi sesudah peluncuran bagi banyak developer, beberapa di antaranya kami jelaskan di postingan blog, ClientLogin #FAIL.

Menggunakan OAuth 2.0 untuk skrip mandiri sisi server

Banyak developer menggunakan ClientLogin untuk mengizinkan skrip command line yang berjalan di server tanpa browser. Dengan OAuth 2.0, hampir selalu ada browser yang terlibat – pengecualiannya adalah ketika Anda mengerjakan aplikasi Android yang menggunakan Google Play Services untuk mengambil token melalui GoogleAuthUtil.

Dalam alur khusus web, situs yang ingin melakukan panggilan API terautentikasi atas nama pengguna harus mengalihkan pengguna ke halaman autentikasi google.com yang menjelaskan tentang aplikasi yang ingin diakses. Aplikasi web kemudian menerima token, yang digunakannya untuk melakukan panggilan API. Pengguna kemudian dapat mencabut akses aplikasi kapan saja menggunakan halaman connected apps and sites.

Contoh kode Python kami menunjukkan cara skrip command line dapat meluncurkan browser dan melakukan panggilan API dari jendela terminal, membuat server lokal untuk memproses kode setelah pengalihan otorisasi, dan secara otomatis menyimpan token untuk panggilan API di masa mendatang. Video cara kerjanya ada di bawah ini:

Token yang digunakan adalah string ASCII. Jika berupa token offline, token tersebut portabel. Dengan menggunakan token yang diambil, Anda dapat menjalankan skrip di desktop, lalu menyalin dan menggunakan kode di server jarak jauh tanpa GUI, asalkan kode membuat instance klien OAuth 2.0 dengan client ID dan rahasia yang sama. Selain Python, library klien Google API untuk bahasa pemrograman lain juga menyediakan metode bantuan untuk mengelola token, yang dapat dibagikan antarklien dan bahkan digunakan di library HTTP tingkat yang lebih rendah secara langsung di header klien atau sebagai parameter URL.

Beberapa contoh skrip sisi server yang menggunakan token offline:

  • Daemon yang memantau direktori video baru untuk diupload secara otomatis ke YouTube
  • cron job yang memperbarui playlist setiap hari dengan konten baru
  • Skrip yang memantau data video melalui YouTube Analytics API dan memberi tahu pengelola channel saat peristiwa tertentu terjadi, seperti waktu tonton gabungan yang melebihi batas. Perhatikan bahwa dalam hal ini, OAuth 2.0 adalah satu-satunya metode otorisasi yang didukung karena Analytics API tidak mendukung ClientLogin.

Bagian tentang token akses berumur panjang memberikan detail lebih lanjut tentang cara membuat token offline yang dapat digunakan untuk proses sisi server.

Praktik terbaik client ID dan rahasia klien

Setiap kode yang menggunakan ID klien dan pasangan rahasia yang sama dapat menggunakan token akses yang sama. Sebaiknya batasi akses ke client ID dan rahasia klien ke kode yang berjalan di mesin dan perangkat dalam organisasi Anda.

Jangan menyertakan client ID dan rahasia klien sebagai bagian dari kode aplikasi seluler native Anda. Semua developer yang melakukan autentikasi OAuth 2.0 dari perangkat seluler harus menggunakan client ID "Aplikasi terinstal" yang meminta informasi tambahan untuk memverifikasi bahwa permintaan tersebut hanya berasal dari aplikasi yang dirilis oleh tim Anda.

Di perangkat Android, aplikasi tidak diidentifikasi menggunakan kombinasi nama paket dan hash sertifikat penandatanganan, bukan ID klien dan rahasia klien. Di perangkat iOS, ID paket dan ID app store digunakan. Dokumentasi resmi terkait pengambilan informasi ini dapat ditemukan di halaman bantuan Google API Console.

Akun Layanan tidak berfungsi dengan YouTube API

Akun layanan tidak berfungsi untuk panggilan YouTube Data API karena akun layanan memerlukan channel YouTube terkait, dan Anda tidak dapat mengaitkan channel baru atau yang sudah ada dengan akun layanan. Jika Anda menggunakan akun layanan untuk memanggil YouTube Data API, server API akan menampilkan error dengan jenis error yang disetel ke unauthorized dan alasan yang ditetapkan ke youtubeSignupRequired.

Akses offline/jangka panjang ke YouTube API

OAuth 2.0 memiliki token berumur pendek dan token berumur panjang. Untuk operasi satu kali, token akses yang berumur pendek adalah opsi terbaik. Masa berlaku token ini akan segera berakhir setelah diberikan. Untuk tugas yang berjalan lama, Anda mungkin ingin mendapatkan token refresh, yang digunakan untuk mengambil token akses yang memiliki masa aktif singkat.

Untuk memastikan aplikasi Anda menerima token refresh yang memiliki masa aktif lama dan bukan token akses yang berumur pendek, gunakan alur "Aplikasi Terinstal" saat membuat client ID, dan pilih Other untuk nilai "Jenis aplikasi yang diinstal":

Sebaiknya Anda menggunakan alur "Aplikasi terinstal" untuk kasus penggunaan ini. Jika Anda memerlukan akses berdurasi panjang ke YouTube API di aplikasi web, Anda dapat mengambilnya dengan menetapkan parameter access_type ke offline dan parameter approval_prompt ke force di permintaan otorisasi awal atau konfigurasi klien Anda. Beberapa library klien akan mengelola pengambilan dan pemuatan ulang token akses. Jika Anda tertarik untuk menulis kode otorisasi khusus Anda sendiri, kami telah memublikasikan postingan blog di blog Google Code yang dapat Anda gunakan sebagai dasar untuk kode Anda.

Menggunakan OAuth 2.0 dengan ponsel, tablet, dan perangkat lainnya

Saat menulis aplikasi Android, developer dapat memanfaatkan Google Play services untuk menangani detail otorisasi. Layanan Google Play menawarkan alur otorisasi standar untuk semua Google API, termasuk API untuk platform YouTube. Pendekatan ini akan memberikan pengalaman pengguna yang jauh lebih unggul bagi pengguna aplikasi Android Anda, dibandingkan autentikasi kustom menggunakan ClientLogin.

Di perangkat iOS, Google memberikan dua opsi:

Untuk perangkat yang dimaksudkan untuk bertindak sebagai perangkat "layar kedua" atau perangkat seperti televisi tanpa mekanisme input yang mudah digunakan, OAuth 2.0 untuk Perangkat adalah pendekatan yang disarankan. OAuth 2.0 untuk Perangkat bekerja dengan menampilkan kode unik untuk pengguna saat permintaan otorisasi diperlukan. Pada tahap ini, pengguna diminta untuk menjelajah ke http://google.com/device di perangkat lain, seperti laptop atau ponsel, dan memasukkan kode unik. Aplikasi menampilkan layar yang terlihat seperti ini:

Saat pengguna memasukkan kode di perangkat lain, aplikasi secara berkala memeriksa untuk melihat apakah kode telah dimasukkan. Setelah itu dilakukan, token akan mengambil token untuk melakukan panggilan API. Untuk melihat cara kerjanya, lihat demo, yang dapat dijalankan di semua perangkat yang mendukung web. API itu sendiri tidak bergantung pada platform, sehingga berguna untuk perangkat yang tidak memiliki kemampuan rendering web. Kami telah memposting kode contoh di Python untuk demo yang akan digunakan sebagai referensi.

Ringkasan

Otorisasi OAuth 2.0 memberikan fleksibilitas bagi developer yang mewajibkan otorisasi YouTube. Developer yang terbiasa dengan ClientLogin mungkin mendapati bahwa penyiapan aplikasi mereka untuk menggunakan OAuth 2.0 memerlukan sedikit lebih banyak upaya untuk memulai, tetapi setelah ditransfer, aplikasi OAuth 2.0 menawarkan lebih banyak fleksibilitas, keamanan, dan kegunaan di beberapa platform untuk pengguna akhir.

Jika ada pertanyaan lain tentang OAuth 2.0 atau contoh apa pun dalam artikel ini, tanyakan kepada tag youtube-api di StackOverflow.