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 familier, bukan percakapan Asisten. Tata letak ini dapat diintegrasikan ke dalam orientasi pengguna, setelan, dan platform aplikasi lainnya sehingga menciptakan peluang untuk menemukan dan berinteraksi 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/mengaktifkan/menonaktifkan 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 setuju untuk melanjutkan atau membatalkan guna menghentikan proses penautan.
- Pengguna akan melihat layar izin Anda dan harus setuju untuk melanjutkan atau membatalkan untuk menghentikan proses penautan.
- Link akan dibuat antara akun pengguna, di layanan Anda, dan Akun Google mereka.
Gambar 1. Menautkan dari Alur Platform
Persyaratan
Untuk menerapkan Link dari platform, Anda memerlukan hal berikut:
- Aplikasi Android.
- Miliki, kelola, dan pelihara 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 Anda
Dapatkan layanan Google Play terbaru di host pengembangan Anda:
- Buka Android SDK Manager.
Di bagian SDK Tools, temukan layanan Google Play.
Jika status untuk paket ini tidak Terinstal, pilih keduanya, lalu klik Install Packages.
Mengonfigurasi aplikasi Anda
Di file
build.gradle
level project, sertakan repositori Maven Google di bagianbuildscript
danallprojects
.buildscript { repositories { google() } } allprojects { repositories { google() } }
Tambahkan dependensi untuk API “Link with Google” ke file gradle level aplikasi modul Anda, biasanya
app/build.gradle
:dependencies { implementation 'com.google.android.gms:play-services-auth:21.2.0' }
Menambahkan dukungan untuk Link dari Platform
Link dari alur Platform 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 autentikasi melalui SDK Layanan Google Play.
Buat PendingIntent yang dapat meluncurkan aktivitas izin Anda - Izin diluncurkan oleh Play Services API. Anda harus menyediakan
PendingIntent
(yang akan disebut sebagaiconsentPendingIntent
agar lebih jelas) 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();
Membuat 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 berasumsi bahwa metode
onConsentAccpeted()
danonConsentRejectedOrCanceled()
akan dipanggil jika pengguna 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 akan meminta izin pengguna dan menampilkan kode otorisasi ke Google.
Praktik Terbaik
Aplikasi Anda harus menunjukkan status link kepada pengguna melalui tombol, tombol beralih, atau elemen visual serupa.
Gambar 1. Gambar contoh status link
Anda harus memberi tahu pengguna setelah link berhasil, mis. menampilkan toast, memicu perubahan status tombol, atau mengalihkan pengguna ke halaman keberhasilan link yang terpisah.
Sebaiknya Anda meminta pengguna dalam aplikasi untuk menautkan akun, idealnya berdasarkan sinyal kuat bahwa penautan akan menguntungkan pengguna tersebut.
Setelah berhasil menautkan, Anda harus memberikan contoh kepada pengguna tentang apa yang harus dilakukan dengan akun tertaut, misalnya, kalau Anda baru saja menautkan layanan streaming musik, minta Asisten Google untuk memutar musik.
Izinkan pengguna mengelola akun tertaut mereka, termasuk opsi untuk membatalkan tautan mereka. Arahkan mereka ke halaman pengelolaan Akun Tertaut Google mereka, yaitu https://myaccount.google.com/accountlinking.