Meneruskan Status dalam Tindakan Email

Anda dapat meneruskan status melalui continue URL saat mengirim tindakan email untuk menyetel ulang sandi atau memverifikasi email pengguna. Dengan begitu, pengguna dapat kembali ke aplikasi setelah tindakan selesai. Selain itu, Anda dapat menentukan apakah akan menangani link tindakan email langsung dari aplikasi seluler saat sudah terinstal, bukan dari halaman web.

Hal ini bisa sangat berguna dalam skenario umum berikut:

  • Pengguna, yang tidak sedang login, mungkin mencoba mengakses konten yang mengharuskannya untuk login. Namun, pengguna mungkin lupa sandinya dan hal itu memicu proses penyetelan ulang sandi. Pada akhir proses, pengguna tersebut ingin kembali ke bagian aplikasi yang semula ingin diakses.

  • Aplikasi mungkin hanya menawarkan akses ke akun yang terverifikasi. Misalnya, newsletter mungkin mengharuskan pengguna untuk memverifikasi email mereka sebelum berlangganan. Pengguna akan melalui proses verifikasi email dan ingin kembali ke aplikasi untuk menyelesaikan langganan mereka.

  • Dalam kasus lain, pengguna mungkin telah memulai proses ini dari perangkat seluler. dan, setelah verifikasi, ingin kembali ke aplikasi seluler, bukan browser.

Kemampuan dalam meneruskan status melalui continue URL adalah fitur yang sangat bermanfaat dari Firebase Auth, sehingga pengguna dapat memperoleh pengalaman yang jauh lebih baik.

Meneruskan status/continue URL dalam tindakan email

Agar bisa meneruskan continue URL dengan aman, domain untuk URL harus diberi akses di Firebase console. Hal ini dilakukan di bagian Authentication dengan menambahkan domain ini ke daftar Domain resmi di bawah tab Metode login, jika domain tersebut belum ada di daftar.

Instance ActionCodeSettings harus diberikan saat mengirim email penyetelan ulang sandi atau email verifikasi. Instance ini dapat dibuat dengan kelas ActionCodeSettings.Builder terkait yang berisi metode berikut:

Metode Deskripsi
setUrl(String url)

Menetapkan link (status/continue URL) yang memiliki arti berbeda dalam konteks lain:

  • Jika link diproses di dalam widget tindakan web, ini adalah deep link dalam parameter kueri continueUrl.
  • Jika link langsung diproses di aplikasi, ini adalah parameter kueri continueUrl di deep link dari Dynamic Link.
setIOSBundleId(String iOSBundleId) Menetapkan ID paket iOS. Link akan dicoba dibuka dalam aplikasi iOS jika aplikasi tersebut sudah terinstal. Aplikasi iOS harus terdaftar di Console.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Menetapkan nama paket Android. Link akan dicoba dibuka dalam aplikasi Android jika aplikasi tersebut sudah terinstal. Jika installIfNotAvailable disetel ke true, hal ini akan menentukan apakah aplikasi Android perlu diinstal atau tidak jika perangkat mendukungnya dan aplikasi tersebut memang belum diinstal. Jika minimumVersion ditentukan, dan aplikasi versi yang lebih lama sudah diinstal, pengguna akan diarahkan ke Play Store untuk mengupgrade aplikasi tersebut. Aplikasi Android harus terdaftar di Console.
setHandleCodeInApp(boolean status) Apakah link tindakan email akan dibuka di aplikasi seluler atau link web terlebih dulu. Defaultnya adalah SALAH. Saat disetel ke BENAR, link kode tindakan akan dikirim sebagai Universal Link atau Android App Link dan akan dibuka oleh aplikasi jika diinstal. Jika disetel ke false, kode akan dikirim ke widget web terlebih dahulu, kemudian akan dialihkan ke aplikasi jika sudah terinstal.
setDynamicLinkDomain(String dynamicLinkDomain) Menetapkan domain (atau subdomain) link dinamis untuk digunakan oleh link saat ini, jika domain tersebut akan dibuka menggunakan Firebase Dynamic Links. Karena satu project dapat memiliki beberapa konfigurasi domain link dinamis, kolom ini memberi kemampuan untuk secara eksplisit memilih satu domain. Jika tidak ada yang ditentukan, domain pertama akan digunakan secara default.

Contoh berikut menggambarkan cara mengirimkan link verifikasi email yang akan dibuka di aplikasi seluler terlebih dahulu sebagai Firebase Dynamic Link (aplikasi iOS com.example.ios atau aplikasi Android com.example.android). Deep link akan berisi payload continue URL https://www.example.com/?email=user@example.com.

Java

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

String url = "http://www.example.com/verify?uid=" + user.getUid();
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build();

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Kotlin

val auth = FirebaseAuth.getInstance()
val user = auth.currentUser

val url = "http://www.example.com/verify?uid=" + user?.uid
val actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build()

user?.sendEmailVerification(actionCodeSettings)
        ?.addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Log.d(TAG, "Email sent.")
            }
        }

Firebase Auth menggunakan Firebase Dynamic Links saat mengirim link yang dimaksudkan untuk dibuka di aplikasi seluler. Untuk menggunakan fitur ini, Dynamic Links perlu dikonfigurasi di Firebase Console.

  1. Mengaktifkan Firebase Dynamic Links:

    1. Di Firebase console, buka bagian Dynamic Links.
    2. Jika Anda belum menyetujui persyaratan Dynamic Links dan membuat domain Dynamic Links, lakukan sekarang.

      Jika Anda telah membuat domain Dynamic Links, catat domain tersebut. Domain Dynamic Links biasanya terlihat seperti contoh berikut:

      example.page.link

      Anda akan memerlukan nilai ini saat mengonfigurasi aplikasi iOS atau Android untuk menghalangi link masuk.

  2. Mengonfigurasi aplikasi Android:

    1. Jika ingin menangani link ini dari aplikasi Android, Anda harus menentukan nama paket Android di setelan project Firebase Console. Selain itu, SHA-1 dan SHA-256 sertifikat aplikasi harus dimasukkan.
    2. Anda juga harus mengonfigurasi filter intent untuk deep link dalam file AndroidManifest.xml.
    3. Untuk mengetahui informasi selengkapnya, baca artikel Petunjuk Menerima Dynamic Links Android.
  3. Mengonfigurasi aplikasi iOS:

    1. Jika Anda ingin menangani link ini dari aplikasi iOS yang dimiliki, Anda harus menentukan ID paket iOS di setelan project Firebase Console. Selain itu, ID App Store dan ID Apple Developer Team juga harus ditentukan.
    2. Anda juga harus mengonfigurasi domain link universal FDL sebagai Domain Terkait pada kapabilitas aplikasi Anda.
    3. Jika ingin mendistribusikan aplikasi Anda ke iOS versi 8 atau yang lebih lama, Anda harus menetapkan ID paket iOS Anda sebagai skema kustom untuk URL masuk.
    4. Untuk mengetahui informasi selengkapnya, baca artikel Petunjuk Menerima Dynamic Links iOS.

Menangani tindakan email dalam aplikasi web

Anda dapat menentukan apakah akan menangani link kode tindakan dari aplikasi web terlebih dahulu atau tidak, kemudian mengalihkan ke halaman web atau aplikasi seluler lain setelah berhasil diselesaikan, asalkan aplikasi seluler tersedia. Hal ini dilakukan dengan memanggil setHandleCodeInApp(false) di objek ActionCodeSettings.Builder. Meskipun ID paket iOS atau nama paket Android tidak diperlukan, pengguna dapat dialihkan kembali ke aplikasi yang ditentukan saat penyelesaian kode tindakan email jika ID atau nama tersebut diberikan.

URL web yang digunakan di sini adalah yang dikonfigurasi di bagian template tindakan email. URL default disediakan untuk semua project. Baca artikel menyesuaikan pengendali email untuk mempelajari lebih lanjut cara menyesuaikan pengendali tindakan email.

Dalam kasus ini, link dalam parameter kueri continueUrl akan menjadi link FDL yang payload-nya adalah URL sebagaimana ditentukan dalam objek ActionCodeSettings. Meskipun Anda dapat menghalangi dan menangani link masuk dari aplikasi Anda tanpa dependensi tambahan, sebaiknya gunakan library klien FDL guna mengurai deep link untuk Anda.

Saat menangani tindakan email, seperti verifikasi email, kode tindakan dari parameter kueri oobCode harus diurai dari deep link, lalu diterapkan melalui applyActionCode agar perubahan diterapkan, yaitu email yang akan diverifikasi.

Menangani tindakan email dalam aplikasi seluler

Anda dapat menentukan apakah akan menangani link kode tindakan dalam aplikasi seluler Anda terlebih dahulu atau tidak, asalkan aplikasi seluler terinstal. Dengan aplikasi Android, Anda juga dapat menentukan melalui boolean installIfNotAvailable bahwa aplikasi akan diinstal jika perangkat mendukungnya dan aplikasi tersebut memang belum terinstal. Jika link diklik dari perangkat yang tidak mendukung aplikasi seluler tersebut, link ini akan dibuka dari halaman web. Hal ini dilakukan dengan memanggil setHandleCodeInApp(true) di objek ActionCodeSettings.Builder. Nama paket Android atau ID paket iOS dari aplikasi seluler itu juga harus ditentukan.

URL web fallback yang digunakan di sini adalah yang dikonfigurasi di bagian template tindakan email jika tidak ada aplikasi seluler yang tersedia. URL default disediakan untuk semua project. Baca artikel menyesuaikan pengendali email untuk mempelajari lebih lanjut cara menyesuaikan pengendali tindakan email.

Dalam kasus ini, link aplikasi seluler yang dikirimkan ke pengguna adalah link FDL yang payload-nya adalah URL kode tindakan yang dikonfigurasikan di Console, dengan parameter kueri oobCode, mode, apiKey, dan continueUrl. Parameter kueri yang disebut terakhir adalah URL asli yang ditentukan dalam objek ActionCodeSettings. Meskipun Anda dapat menghalangi dan menangani link masuk dari aplikasi Anda tanpa dependensi tambahan, sebaiknya gunakan library klien FDL guna mengurai deep link untuk Anda. Kode tindakan dapat diterapkan secara langsung dari aplikasi seluler, mirip dengan ketika ditangani dari alur web yang dijelaskan di bagian menyesuaikan pengendali email.

Saat menangani tindakan email, seperti verifikasi email, kode tindakan dari parameter kueri oobCode harus diurai dari deep link, lalu diterapkan melalui applyActionCode agar perubahan diterapkan, yaitu email yang akan diverifikasi.