Memulai Penautan Akun Google langsung dari platform Anda.

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.

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:

  1. Pengguna akan mengklik/mengaktifkan/menonaktifkan pemicu penautan di aplikasi seluler Anda.
  2. Pengguna memilih Akun Google yang akan ditautkan.
    1. Pengguna memilih Akun Google yang ada di perangkat untuk ditautkan, atau login dengan akun baru
  3. Pengguna akan melihat layar izin yang dihosting Google dan harus setuju untuk melanjutkan atau membatalkan guna menghentikan proses penautan.
  4. Pengguna akan melihat layar izin Anda dan harus setuju untuk melanjutkan atau membatalkan untuk menghentikan proses penautan.
  5. 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:

  1. Buka Android SDK Manager.
  1. Di bagian SDK Tools, temukan layanan Google Play.

  2. Jika status untuk paket ini tidak Terinstal, pilih keduanya, lalu klik Install Packages.

Mengonfigurasi aplikasi Anda

  1. Di file build.gradle level project, sertakan repositori Maven Google di bagian buildscript dan allprojects.

    buildscript {
        repositories {
            google()
        }
    }
    
    allprojects {
        repositories {
            google()
        }
    }
    
  2. 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'
    }
    

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.

  1. Buat PendingIntent yang dapat meluncurkan aktivitas izin Anda - Izin diluncurkan oleh Play Services API. Anda harus menyediakan PendingIntent (yang akan disebut sebagai consentPendingIntent agar lebih jelas) saat API dipanggil

    Kotlin

    // 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();
    
  2. 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() dan onConsentRejectedOrCanceled() akan dipanggil jika pengguna menyetujui atau menolak/membatalkan izin Anda.

  3. 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.

Referensi

Dokumentasi referensi Android Auth API