Tab Auth menyediakan alur autentikasi yang aman dan sederhana untuk digunakan di aplikasi Android. Dengan membuat dan meluncurkan AuthTabIntent
, Anda dapat memanggil Tab Kustom khusus yang dirancang untuk mengelola pengalaman autentikasi end-to-end. Tab ini disederhanakan dan memiliki kemampuan terbatas, sehingga pengguna dapat berfokus pada tugas yang sedang dikerjakan. Setelah selesai, tab akan memanggil kembali aplikasi Anda dengan hasil menggunakan https atau skema kustom.


Mulai Chrome 132, Tab Auth dapat langsung menggantikan integrasi autentikasi Tab Kustom yang ada. Untuk pengguna yang perangkatnya tidak mendukung Tab Auth, penggantian ke Tab Kustom akan otomatis. Migrasi dari Tab Kustom ke Tab Auth dapat dilakukan dengan mengubah beberapa baris kode.
Cara kerjanya
Dengan Tab Auth, aplikasi klien meluncurkan Tab Kustom khusus yang menampilkan jendela browser yang memuat URL dengan halaman autentikasi yang diharapkan. Setelah selesai, Tab Auth akan menampilkan hasil autentikasi menggunakan callback.
Setelah autentikasi, saat navigasi ke URI pengalihan callback yang disediakan sebelumnya terjadi, pengalihan akan diambil dan ditampilkan ke aplikasi klien menggunakan callback. Untuk pengalihan menggunakan skema https, browser memverifikasi bahwa domain pengalihan dan aplikasi klien dimiliki oleh penayang yang sama menggunakan Digital Asset Links.
Klien menerima URI yang dinavigasi dengan skema pengalihan (atau untuk https, host dan jalur pengalihan) menggunakan callback yang disediakan. Data ini mencakup kode hasil serta data lain yang diberikan oleh antarmuka autentikasi. Anda dapat menggunakan data ini untuk memverifikasi autentikasi atau menangani skenario yang tidak berhasil.
Mengapa Tab Autentikasi?
Sebelum Tab Auth, Anda dapat menggunakan intent Tab Kustom standar untuk mendukung alur autentikasi. Tab Auth lebih disukai karena memberikan keamanan yang ditingkatkan, pengalaman yang disederhanakan, dan juga mengabstraksi beberapa internal untuk autentikasi dari kode klien. Karena alasan ini, Anda akan mendapati bahwa Tab Auth memberikan pengalaman yang lebih baik.
Keamanan yang ditingkatkan
Dalam penerapan Tab Kustom standar, intent diperlukan untuk menerima data dari jendela browser yang menangani autentikasi. Hal ini memerlukan kode tambahan dan mengekspos aplikasi Anda ke potensi gangguan pada maksud Anda. Dengan Tab Auth, data diterima menggunakan callback, dengan transfer data langsung antara Android API dan aplikasi klien.
Pengalaman yang lebih lancar
Di Tab Kustom, pengguna memiliki akses ke fitur tambahan di browser yang mungkin tidak diinginkan untuk alur autentikasi. Tab Auth memberikan pengalaman yang lebih sederhana dengan menghapus sebagian besar opsi penyesuaian yang tersedia di Tab Kustom standar. Untuk browser Chrome, hal ini mencakup tombol minimalkan, menu kontekstual tekan lama, dan sentuh untuk menelusuri, serta item menu untuk Buka di Chrome, bookmark, download dan bagikan, serta Tambahkan ke Layar utama.
Tab Auth masih mempertahankan fitur agar browser dapat mengisi otomatis sandi dan pembayaran yang disimpan sebelumnya, kembali atau maju, memuat ulang, menampilkan informasi halaman, meminta versi desktop halaman, dan menyediakan terjemahan.
Abstraksi data
Dengan menerapkan Tab Auth saja, Anda tidak perlu lagi menggunakan intent untuk menerima data dari browser, serta filter intent di AndroidManifest.xml
yang sebelumnya diperlukan agar autentikasi berfungsi dengan benar. Hal ini menghilangkan kompleksitas di sisi klien. Beberapa fitur ini masih dapat disertakan dalam kode klien untuk memberikan kompatibilitas mundur dengan Tab Kustom dalam situasi saat Tab Auth tidak tersedia di perangkat pengguna.
Menerapkan Tab Auth
Tab Auth memerlukan library autentikasi browser AndroidX. AndroidX Browser Library dapat ditambahkan di bagian dependensi file build.gradle
project. API ini tersedia di build alfa. Tambahkan kode berikut ke file build Anda:
dependencies {
implementation 'androidx.browser:browser:1.9.0'
}
Sebelum meluncurkan Tab Auth, deklarasikan ActivityResultLauncher
yang mengambil ActivityResultCaller
serta ActivityResultCallback
. Hal ini dilakukan sebelum aktivitas atau fragmen dibuat:
// In your activity
private final ActivityResultLauncher<Intent> mLauncher =
AuthTabIntent.registerActivityResultLauncher(this, this::handleAuthResult);
private void handleAuthResult(AuthResult result) {
String message = switch (result.resultCode) {
case AuthTabIntent.RESULT_OK -> "Received auth result.";
case AuthTabIntent.RESULT_CANCELED -> "AuthTab canceled.";
case AuthTabIntent.RESULT_VERIFICATION_FAILED -> "Verification failed.";
case AuthTabIntent.RESULT_VERIFICATION_TIMED_OUT -> "Verification timed out.";
}
if (result.resultCode == AuthTabIntent.RESULT_OK) {
message += " Uri: " + result.resultUri;
}
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
Selanjutnya, gunakan AuthTabIntent.Builder
untuk membuat AuthTabIntent
, lalu panggil metode launch
. Metode peluncuran menerima salah satu dari dua set parameter berdasarkan skema yang Anda perlukan:
redirectScheme: Untuk skema pengalihan kustom, browser mengalihkan dan menampilkan URI dengan skema yang diberikan.
redirectHost, redirectPath: Untuk skema pengalihan https, API memerlukan host dan jalur terpisah agar browser dapat mendeteksi pengalihan dan menampilkan URI. Saat menggunakan https, verifikasi Digital Asset Link diperlukan.
private void launchAuthTab() {
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth"), "mycustomscheme");
}
private void launchAuthTabHttps() {
String host = "your_host";
String path = "your_path";
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
}
Bermigrasi dari Tab Kustom ke Tab Auth
Perbarui penerapan autentikasi Tab Kustom yang ada dengan mengubah intent Tab Kustom ke intent Tab Auth baru. Setelah menambahkan kode, temukan intent Tab Kustom dan ubah ke intent Tab Auth baru.
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build();
customTabsIntent.launchUrl(context, uri)
// change to -->
AuthTabIntent authTabIntent = new AuthTabIntent.Builder.build();
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", "mycustomscheme");
/* - OR - */
authTabIntent.launch(mLauncher, Uri.parse("https://www.example.com/auth", host, path);
Kembali ke Tab Kustom
Beberapa penerapan dapat memerlukan autentikasi jika perangkat pengguna tidak dilengkapi untuk menangani Tab Auth. Misalnya, hal ini dapat terjadi jika browser default tidak mendukung Tab Auth atau jika versi browser default tidak berada pada tingkat yang diperlukan. Dalam kasus ini, intent Tab Auth akan otomatis meluncurkan Tab Kustom sebagai gantinya untuk browser yang mendukung Tab Kustom.
Anda dapat memeriksa apakah Tab Auth didukung oleh browser menggunakan CustomTabsClient#isAuthTabSupported()
. Metode ini memungkinkan aplikasi Anda memilih secara dinamis antara meluncurkan Tab Auth atau alur Tab Kustom berdasarkan kemampuan browser. Untuk menangani situasi dengan baik saat Tab Auth tidak didukung, tambahkan penerapan Tab Auth sambil mempertahankan penanganan alur autentikasi kode Tab Kustom yang ada sebagai penggantian.
Berhati-hatilah dalam menangani data yang dapat masuk ke ActivityResultCallback
atau intent Aktivitas Anda. Perhatikan bahwa jika AuthTabIntent
digunakan untuk meluncurkan pengalaman penggantian dan Tab Auth tidak didukung oleh browser saat ini, aplikasi Anda akan menerima hasil Activity.RESULT_CANCELED
saat tab kustom ditutup.
Contoh penerapan Tab Auth dengan penggantian ke Custom Tabs dapat ditemukan di library Android Browser Helper.