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

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:

  1. Pengguna akan mengklik / mengaktifkan pemicu penautan di aplikasi seluler Anda.
  2. Pengguna memilih Akun Google yang akan ditautkan.
    1. Pengguna memilih Akun Google yang sudah ada di perangkat untuk ditautkan, atau login dengan akun baru
  3. Pengguna akan melihat layar izin yang dihosting Google dan harus menyetujui 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. Penautan dibuat antara akun pengguna, di layanan Anda, dan Akun Google-nya.

Gambar 1. Menautkan dari Alur Platform

Persyaratan

Untuk menerapkan Link dari platform, 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 dengan 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, cari 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.0.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 masing-masing jika pengguna menerima 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, beralih, atau elemen visual yang serupa.

    Gambar 1. Contoh gambar status link

  • Anda harus memberi tahu pengguna setelah link berhasil, misalnya menampilkan toast, memicu perubahan status tombol, atau mengalihkan pengguna ke halaman link yang berhasil secara terpisah.

  • Sebaiknya pertimbangkan 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 tentang apa yang harus dilakukan dengan akun tertaut. Misalnya, jika 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 API autentikasi Android