Peringatan: Data ini disediakan berdasarkan Kebijakan Data Pengguna Google. Harap tinjau dan patuhi kebijakan tersebut. Ketidakpatuhan terhadap persyaratan tersebut dapat mengakibatkan penangguhan project atau akun.

Masuk di TV dan Perangkat Input Terbatas

Anda dapat mengizinkan pengguna masuk ke aplikasi Anda dengan akun Google mereka di perangkat dengan kemampuan input terbatas, seperti TV yang tersambung ke Internet.

Aplikasi menampilkan kode pendek dan URL masuk ke pengguna. Kemudian, pengguna membuka URL masuk di browser web, memasukkan kode, dan memberikan izin aplikasi untuk mengakses informasi masuk pengguna. Terakhir, aplikasi menerima konfirmasi dan pengguna masuk.

Untuk menggunakan alur masuk ini, aplikasi harus berjalan di perangkat yang memenuhi kriteria berikut:

  • Perangkat harus mampu menampilkan URL 40 karakter dan kode pengguna 15 karakter, bersama dengan instruksi kepada pengguna.
  • Perangkat harus terhubung ke Internet.

Dapatkan ID klien dan rahasia klien

Aplikasi Anda memerlukan ID klien OAuth 2.0 dan rahasia klien untuk membuat permintaan ke titik akhir proses masuk Google.

Untuk menemukan ID klien dan rahasia klien proyek Anda, lakukan hal berikut:

  1. Pilih kredensial OAuth 2.0 yang ada atau buka halaman Kredensial .
  2. Jika Anda belum melakukannya, buat kredensial OAuth 2.0 proyek Anda dengan mengklik Buat kredensial > ID klien OAuth , dan berikan informasi yang diperlukan untuk membuat kredensial.
  3. Cari ID Klien di bagian ID klien OAuth 2.0 . Untuk detailnya, klik ID klien.

Jika Anda membuat ID klien baru, pilih jenis aplikasi TV dan perangkat Input Terbatas .

Dapatkan kode pengguna dan URL verifikasi

Setelah pengguna meminta untuk masuk menggunakan Akun Google, Anda mendapatkan kode pengguna dan URL verifikasi dengan mengirimkan permintaan HTTP POST ke titik akhir perangkat OAuth 2.0, https://oauth2.googleapis.com/device/code . Sertakan ID klien Anda dan daftar cakupan yang Anda butuhkan dengan permintaan. Jika Anda hanya ingin memasukkan pengguna dengan akun Google mereka, minta hanya profile dan cakupan email ; atau, jika Anda ingin meminta izin untuk memanggil API yang didukung atas nama pengguna, mintalah cakupan yang diperlukan selain cakupan profile dan email .

Berikut ini adalah contoh permintaan untuk kode pengguna:

POST /device/code HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&scope=email%20profile

Menggunakan curl :

curl -d "client_id=CLIENT_ID&scope=email profile" https://oauth2.googleapis.com/device/code

Respons dikembalikan sebagai objek JSON:

{
  "device_code" : "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8",
  "user_code" : "GQVQ-JKEC",
  "verification_url" : "https://www.google.com/device",
  "expires_in" : 1800,
  "interval" : 5
}

Aplikasi Anda menampilkan nilai user_code dan verification_url kepada pengguna, dan, pada saat yang sama, melakukan polling titik akhir masuk pada interval yang ditentukan hingga pengguna masuk atau waktu yang ditentukan oleh expires_in telah berlalu.

Tampilkan kode pengguna dan URL verifikasi

Setelah Anda menerima kode pengguna dan URL verifikasi dari titik akhir perangkat, tampilkan dan instruksikan pengguna untuk membuka URL dan memasukkan kode pengguna.

Nilai dari verification_url dan user_code dapat berubah. Rancang UI Anda dengan cara yang dapat menangani batasan berikut:

  • user_code harus ditampilkan dalam bidang yang cukup lebar untuk menangani karakter berukuran 15 W
  • verification_url harus ditampilkan dalam bidang yang cukup lebar untuk menangani string URL yang panjangnya 40 karakter.

Kedua string dapat berisi karakter apa pun yang dapat dicetak dari set karakter US-ASCII.

Saat Anda menampilkan string user_code , jangan ubah string dengan cara apa pun (seperti mengubah huruf besar atau kecil atau menyisipkan karakter pemformatan lain), karena aplikasi Anda mungkin rusak jika format kode berubah di masa mendatang.

Anda dapat memodifikasi string verification_url dengan menghapus skema dari URL untuk tujuan tampilan jika Anda mau. Jika ya, pastikan aplikasi Anda dapat menangani varian "http" dan "https". Jangan ubah string verification_url .

Saat pengguna menavigasi ke URL verifikasi, mereka melihat halaman yang mirip dengan berikut ini:

Hubungkan perangkat dengan memasukkan kode

Setelah pengguna memasukkan kode pengguna, situs masuk Google menampilkan layar persetujuan yang mirip dengan berikut:

Contoh layar persetujuan untuk klien perangkat

Jika pengguna mengklik Izinkan , maka aplikasi Anda dapat memperoleh token ID untuk mengidentifikasi pengguna, token akses untuk memanggil Google API, dan token penyegaran untuk memperoleh token baru.

Dapatkan token ID dan segarkan token

Setelah aplikasi Anda menampilkan kode pengguna dan URL verifikasi, mulailah polling titik akhir token ( https://oauth2.googleapis.com/token ) dengan kode perangkat yang Anda terima dari titik akhir perangkat. Polling titik akhir token pada interval, dalam detik, yang ditentukan oleh nilai interval .

Berikut ini adalah contoh permintaan:

POST /token HTTP/1.1
Host: oauth2.googleapis.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0

Menggunakan curl :

curl -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=DEVICE_CODE&grant_type=http://oauth.net/grant_type/device/1.0" https://oauth2.googleapis.com/token

Jika pengguna belum menyetujui permintaan, responsnya adalah sebagai berikut:

{
  "error" : "authorization_pending"
}

Aplikasi Anda harus mengulangi permintaan ini dengan kecepatan yang tidak melebihi nilai interval . Jika aplikasi Anda melakukan polling terlalu cepat, responsnya adalah sebagai berikut:

{
  "error" : "slow_down"
}

Setelah pengguna masuk dan memberi aplikasi Anda akses ke cakupan yang Anda minta, respons terhadap permintaan aplikasi Anda berikutnya mencakup token ID, token akses, dan token penyegaran:

{
  "access_token" : "ya29.AHES6ZSuY8f6WFLswSv0HZLP2J4cCvFSj-8GiZM0Pr6cgXU",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/551G1yXUqgkDGnkfFk6ZbjMMMDIMxo3JFc8lY8CAR-Q",
  "id_token": "eyJhbGciOiJSUzI..."
}

Setelah menerima respons ini, aplikasi Anda dapat mendekode token ID untuk mendapatkan informasi profil dasar tentang pengguna yang masuk, atau mengirim token ID ke server backend aplikasi Anda untuk mengautentikasi dengan server secara aman. Selain itu, aplikasi Anda dapat menggunakan token akses untuk memanggil Google API yang diotorisasi oleh pengguna.

ID dan token akses memiliki masa pakai yang terbatas. Agar pengguna tetap masuk melampaui masa pakai token, simpan token penyegaran dan gunakan untuk meminta token baru .

Dapatkan informasi profil pengguna dari token ID

Anda bisa mendapatkan informasi profil tentang pengguna yang masuk dengan mendekode token ID dengan pustaka dekode JWT apa pun . Misalnya, menggunakan perpustakaan JavaScript Auth0 jwt-decode :

var user_profile = jwt_decode(id_token);

// The "sub" field is available on all ID tokens. This value is unique for each
// Google account and can be used to identify the user. (But do not send this
// value to your server; instead, send the whole ID token so its authenticity
// can be verified.)
var user_id = user_profile["sub"];

// These values are available when you request the "profile" and "email" scopes.
var user_email = user_profile["email"];
var email_verified = user_profile["email_verified"];
var user_name = user_profile["name"];
var user_photo_url = user_profile["picture"];
var user_given_name = user_profile["given_name"];
var user_family_name = user_profile["family_name"];
var user_locale = user_profile["locale"];

Informasi lebih lanjut

  • Untuk membuat pengguna tetap masuk setelah masa pakai token ID, lihat Menyegarkan token akses .
  • Jika Anda perlu mengautentikasi dengan server backend, lihat Mengautentikasi dengan server backend untuk informasi tentang melakukannya dengan aman.