Penautan Akun dapat diselesaikan secara langsung dalam aplikasi seluler, sehingga pengguna dapat menautkan akun mereka di layanan Anda dengan Akun Google mereka. Link yang telah dibuat akan memberi Google akses ke data yang diizinkan untuk dibagikan oleh pengguna.
Pendekatan ini meningkatkan performa penautan akun dengan melibatkan pengguna dalam konteks aplikasi Anda yang sudah dikenal, bukan percakapan Asisten. Fitur ini dapat diintegrasikan ke dalam proses orientasi pengguna, setelan, dan platform aplikasi lainnya, sehingga menciptakan peluang untuk penemuan dan interaksi dengan Action Asisten Google Anda. Misalnya, setelah menautkan, Anda dapat menawarkan untuk mengarahkan pengguna langsung ke Action Anda.
Manfaatnya bagi pengguna meliputi:
- Pengguna bisa memulai dan menyelesaikan proses penautan akun di aplikasi Anda, lingkungan yang sudah mereka kenal.
- Pengguna tidak memerlukan kredensial login karena telah diautentikasi di perangkat dan di aplikasi seluler Anda.
Manfaat bagi developer meliputi:
- Kontrol tempat untuk mempromosikan dan memulai penautan akun di aplikasi seluler, misalnya, di setelan pengguna, pada interstisial, atau setelah pengguna login ke aplikasi seluler Anda. Menambahkan beberapa titik masuk untuk memulai penautan akun membantu membuat penautan akun lebih mudah ditemukan , sehingga meningkatkan interaksi dan jumlah akun tertaut.
- Peningkatan rasio konversi karena pengguna dapat menyelesaikan proses penautan dalam langkah yang lebih sedikit daripada alur OAuth berbasis web standar.
- Upaya rekayasa rendah diperlukan untuk menerapkan Link dari Platform Anda (Android) karena alur ini memanfaatkan implementasi OAuth2.0 yang ada, dengan asumsi Anda sudah menerapkannya.
- Penurunan rasio berpaling karena pengguna tidak perlu memasukkan ulang kredensial login dan dapat menyelesaikan proses dengan lebih sedikit langkah. Tingkat kegagalan berpaling dapat mencapai 80% dalam alur ketika pengguna diminta untuk menarik kembali dan memasukkan kredensial login.
Cara kerjanya
Penautan dari Platform Anda diselesaikan dalam langkah-langkah berikut:
- Pengguna akan mengklik / mengalihkan pemicu penautan di aplikasi seluler Anda.
- Pengguna memilih Akun Google yang akan ditautkan.
- Pengguna memilih Akun Google yang ada di perangkat untuk ditautkan, atau login dengan akun baru
- Pengguna akan melihat layar izin yang dihosting Google dan harus menyetujui untuk melanjutkan atau membatalkan untuk menghentikan proses penautan.
- Pengguna akan melihat layar izin Anda dan harus menyetujui untuk melanjutkan atau membatalkan untuk menghentikan proses penautan.
- Penautan dibuat antara akun pengguna, di layanan Anda, dan Akun Google-nya.

Gambar 1. Link dari Alur Platform Anda
Persyaratan
Untuk menerapkan Penautan dari platform Anda, Anda memerlukan hal berikut:
- Aplikasi Android.
- Miliki, kelola, dan pertahankan server OAuth 2.0 yang mendukung alur kode otorisasi OAuth 2.0.
Penyiapan
Sebelum melanjutkan langkah-langkah di bawah, Anda harus menyelesaikan proses pendaftaran Penautan Akun.
Menyiapkan lingkungan pengembangan
Dapatkan layanan Google Play terbaru di host pengembangan Anda:
- Buka Android SDK Manager.
Di bagian SDK Tools, temukan Google Play services.
Jika status paket ini bukan Diinstal, pilih keduanya, lalu klik Instal Paket.
Mengonfigurasi aplikasi Anda
Dalam file
build.gradle
level project, sertakan repositori Maven Google di bagianbuildscript
danallprojects
.buildscript { repositories { google() } } allprojects { repositories { google() } }
Tambahkan dependensi untuk “Link dengan Google” API ke file gradle level aplikasi modul Anda, yang biasanya
app/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-auth:21.4.0' }
Menambahkan dukungan untuk Menautkan dari Platform Anda
Alur Penautan dari Platform Anda akan menghasilkan token akses, yang disediakan oleh layanan Anda, yang disimpan oleh Google. Izin harus diterima sebelum menampilkan token untuk pengguna.
Ikuti langkah-langkah di bawah untuk mendapatkan izin dari pengguna dan menampilkan token kode otorisasi melalui SDK Layanan Google Play.
Buat PendingIntent yang dapat meluncurkan aktivitas izin Anda - Izin diluncurkan oleh Play Services API. Anda harus memberikan
PendingIntent
(yang akan disebut sebagaiconsentPendingIntent
untuk kejelasan) saat API dipanggilKotlin
// Build a PendingIntent that can launch the consent activity val consentPendingIntent = buildConsentPendingIntent()
Java
// Build a PendingIntent that can launch your consent activity PendingIntent consentPendingIntent = buildConsentPendingIntent();
Buat Aktivitas yang sesuai untuk menangani intent izin
Kotlin
class ConsentActivity : AppCompatActivity private fun onConsentAccepted() { // Obtain a token (for simplicity, we’ll ignore the async nature // of the following call) val token = getToken() val intent = Intent() .putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token) setResult(Activity.RESULT_OK, intent) finish() } private fun onConsentRejectedOrCanceled() { setResult(Activity.RESULT_CANCELED) finish() }
Java
public class ConsentActivity extends AppCompatActivity { ... private void onConsentAccepted() { // Obtain a token (for simplicity, we’ll ignore the async nature of // the following call String token = getToken(); Intent intent = new Intent(); intent.putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token); setResult(Activity.RESULT_OK, intent); finish(); } private void onConsentRejectedOrCanceled() { setResult(Activity.RESULT_CANCELED, null); finish(); } }
Kami mengasumsikan bahwa metode
onConsentAccpeted()
danonConsentRejectedOrCanceled()
dipanggil jika pengguna masing-masing menyetujui atau menolak/membatalkan izin Anda.Buat permintaan untuk menyimpan token dan, di antara parameter konfigurasi lainnya, teruskan
PendingIntent
yang dibuat pada langkah 1 di atas.Kotlin
// Create an ActivityResultLauncher which registers a callback for the // Activity result contract val activityResultLauncher = registerForActivityResult( ActivityResultContracts.StartIntentSenderForResult()) { result -> if (result.resultCode == RESULT_OK) { // Successfully finished the flow and saved the token } else { // Flow failed, for example the user may have canceled the flow } } // Build token save request val request = SaveAccountLinkingTokenRequest.builder() .setTokenType(SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE) .setConsentPendingIntent(consentPendingIntent) .setServiceId("service-id-of-and-defined-by-developer") //Set the scopes that the token is valid for on your platform .setScopes(scopes) .build() // Launch consent activity and retrieve token Identity.getCredentialSavingClient(this) .saveAccountLinkingToken(request) .addOnSuccessListener( saveAccountLinkingTokenResult -> { if (saveAccountLinkingTokenResult.hasResolution()) { val pendingIntent = saveAccountLinkingTokenResult .getPendingIntent() val intentSenderRequest = IntentSenderRequest .Builder(pendingIntent).build() activityResultLauncher.launch(intentSenderRequest) } else { // This should not happen, let’s log this Log.e(TAG, "Failed to save token"); } }) .addOnFailureListener(e -> Log.e(TAG, “Failed to save token”, e))
Java
// Create an ActivityResultLauncher which registers a callback for the // Activity result contract ActivityResultLauncher<IntentSenderRequest> activityResultLauncher = registerForActivityResult(new ActivityResultContracts .StartIntentSenderForResult(), result -> { if (result.getResultCode() == RESULT_OK) { // Successfully finished the flow and saved the token } else { // Flow failed, for example the user may have canceled the flow } }); // Build token save request SaveAccountLinkingTokenRequest request = SaveAccountLinkingTokenRequest.builder() .setTokenType( SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE) .setConsentPendingIntent(consentPendingIntent) .setServiceId("service-id-of-and-defined-by-developer") //Set the scopes that the token is valid for on your platform .setScopes(scopes) .build(); // Launch consent activity and retrieve token Identity.getCredentialSavingClient(this) .saveAccountLinkingToken(request) .addOnSuccessListener( saveAccountLinkingTokenResult -> { if (saveAccountLinkingTokenResult.hasResolution()) { // Launch the resolution intent PendingIntent pendingIntent = saveAccountLinkingTokenResult.getPendingIntent(); IntentSenderRequest intentSenderRequest = new IntentSenderRequest.Builder(pendingIntent).build(); activityResultLauncher.launch(intentSenderRequest); } else { // This should not happen, let’s log this Log.e(TAG, "Failed to save token"); } }) .addOnFailureListener(e -> Log.e(TAG, "Failed to save token", e)); ```
Langkah-langkah di atas meminta izin pengguna dan menampilkan kode otorisasi ke Google.
Praktik Terbaik
Aplikasi Anda harus menunjukkan status penautan kepada pengguna melalui tombol, tombol geser, atau elemen visual serupa.
Gambar 1. Contoh gambar status penautan
Anda harus memberi tahu pengguna setelah penautan berhasil, misalnya menampilkan toast, memicu perubahan status tombol, atau mengalihkan pengguna ke halaman keberhasilan penautan terpisah.
Anda harus mempertimbangkan untuk meminta pengguna dalam aplikasi menautkan akun, idealnya berdasarkan sinyal kuat bahwa penautan akan bermanfaat bagi pengguna tersebut.
Setelah berhasil menautkan, Anda harus memberi pengguna contoh tindakan yang dapat dilakukan dengan akun tertaut, misalnya, jika Anda baru saja menautkan layanan streaming musik, minta Asisten Google Anda untuk memutar musik.
Memungkinkan pengguna mengelola akun tertaut mereka, termasuk opsi untuk membatalkan tautan akun tersebut. Arahkan mereka ke halaman pengelolaan Akun Tertaut Google mereka, yaitu https://myaccount.google.com/accountlinking.