Buka konsol

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 mengharuskan dirinya untuk login. Namun, dia mungkin lupa sandinya dan hal itu memicu proses penyetelan ulang sandi. Pada akhir proses, pengguna tersebut ingin kembali ke bagian aplikasi yang semula ingin diaksesnya.

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

  • Secara umum, saat pengguna memulai penyetelan ulang sandi atau alur verifikasi email pada aplikasi iOS, mereka berharap agar bisa menyelesaikan alur di dalam aplikasi; dengan kemampuan untuk meneruskan status melalui continue URL, hal ini bisa dilakukan.

Kemampuan dalam meneruskan status melalui continue URL adalah fitur yang sangat bermanfaat dari Firebase Auth, yang memungkinkan pengguna untuk mendapatkan 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 FIRActionCodeSettings harus diberikan saat mengirim email penyetelan ulang sandi atau email verifikasi. Antarmuka ini mengambil parameter berikut:

Swift

Parameter Jenis Deskripsi
URL String

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

  • Saat link ditangani di widget tindakan web, ini berupa deep link dalam parameter kueri continueUrl.
  • Saat link ditangani di aplikasi secara langsung, ini berupa parameter kueri continueUrl di deep link dalam Dynamic Link.
iOSBundleID String Menetapkan ID paket iOS. Parameter ini akan mencoba membuka link di aplikasi iOS jika sudah terinstal. Aplikasi iOS harus terdaftar di Console. Jika tidak ada ID Paket, nilai kolom ini akan ditetapkan ke ID paket dari paket utama Aplikasi.
androidPackageName String Menetapkan nama paket Android. Parameter ini akan mencoba membuka link di aplikasi Android jika sudah terinstal.
androidInstallIfNotAvailable Bool Menentukan apakah aplikasi Android akan diinstal jika perangkatnya mendukung dan aplikasi tersebut belum diinstal. Jika kolom ini diisi tanpa memasukkan packageName, akan muncul error yang menjelaskan bahwa packageName untuk kolom ini harus diisikan.
androidMinimumVersion String Versi minimum aplikasi yang didukung dalam alur ini. Jika minimumVersion ditetapkan dan versi aplikasi yang lebih lama terinstal, pengguna akan diarahkan ke Play Store untuk mengupgrade aplikasi tersebut. Aplikasi Android harus didaftarkan di Console.
handleCodeInApp Bool Baik 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 terinstal.
dynamicLinkDomain String Menetapkan domain (atau subdomain) link dinamis untuk digunakan link saat ini, jika domain link tersebut 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.

Objective-C

Parameter Jenis Deskripsi
URL NSString

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

  • Saat link ditangani di widget tindakan web, ini berupa deep link dalam parameter kueri continueUrl.
  • Saat link ditangani di aplikasi secara langsung, ini berupa parameter kueri continueUrl di deep link dalam Dynamic Link.
iOSBundleID NSString Menetapkan ID paket iOS. Parameter ini akan mencoba membuka link di aplikasi iOS jika sudah terinstal. Aplikasi iOS harus terdaftar di Console.
androidPackageName NSString Menetapkan nama paket Android. Parameter ini akan mencoba membuka link di aplikasi Android jika sudah terinstal.
androidInstallIfNotAvailable BOOL Menentukan apakah aplikasi Android akan diinstal jika perangkatnya mendukung dan aplikasi tersebut belum diinstal. Jika kolom ini diisi tanpa memasukkan packageName, akan muncul error yang menjelaskan bahwa packageName untuk kolom ini harus diisikan.
androidMinimumVersion NSString Versi minimum aplikasi yang didukung dalam alur ini. Jika minimumVersion ditetapkan dan versi aplikasi yang lebih lama terinstal, pengguna akan diarahkan ke Play Store untuk mengupgrade aplikasi tersebut. Aplikasi Android harus didaftarkan di Console.
handleCodeInApp BOOL Baik 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 terinstal.
dynamicLinkDomain NSString Menetapkan domain (atau subdomain) link dinamis untuk digunakan link saat ini, jika domain link tersebut 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 mengirim link verifikasi email yang akan terbuka di aplikasi seluler terlebih dahulu sebagai Firebase Dynamic Link menggunakan domain link dinamis kustom example.page.link (com.example.ios untuk aplikasi iOS atau com.example.android untuk aplikasi Android tempat aplikasi akan diinstal jika belum, dan versi minimumnya adalah versi 12). Deep link berisi payload continue URL https://www.example.com/?email=user@example.com.

Swift


var actionCodeSettings =  ActionCodeSettings.init()
actionCodeSettings.canHandleInApp = true
let user = Auth.auth().currentUser()
actionCodeSettings.URL =
    String(format: "https://www.example.com/?email=%@", user.email)
actionCodeSettings.iOSbundleID = Bundle.main.bundleIdentifier!
actionCodeSettings.setAndroidPakageName("com.example.android",
                                         installIfNotAvailable:true,
                                         minumumVersion:"12")
// When multiple custom dynamic link domains are defined, specify which one to use.
actionCodeSettings.dynamicLinkDomain = "example.page.link"
user.sendEmailVerification(withActionCodeSettings:actionCodeSettings { error in
  if error {
    // Error occurred. Inspect error.code and handle error.
    return
  }
  // Email verification sent.
})

Objective-C

 FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
 actionCodeSettings.handleCodeInApp = YES;
 FIRUser *user = [FIRAuth auth].currentUser;
 NSString *urlString =
     [NSString stringWithFormat:@"https://www.example.com/?email=%@", user.email];
 actionCodeSettings.URL = [NSURL URLWithString:urlString];
 actionCodeSettings.iOSBundleID = [NSBundle mainBundle].bundleIdentifier;
 // When multiple custom dynamic link domains are defined, specify which one to use.
 actionCodeSettings.dynamicLinkDomain = @"example.page.link";
 [actionCodeSettings setAndroidPackageName:@"com.example.android"
                     installIfNotAvailable:YES
                            minimumVersion:'12'];
 [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings
                                        completion:^(NSError *_Nullable error) {
   if (error) {
     // Error occurred. Inspect error.code and handle error.
     return;
   }
   // Email verification 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. Aktifkan 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 Anda untuk menghalangi link masuk.

  2. Mengonfigurasi aplikasi Android:

    1. Jika ingin menangani link ini dari aplikasi Android Anda, 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 informasi selengkapnya, lihat Menerima petunjuk Dynamic Links Android.
  3. Mengonfigurasi aplikasi iOS:

    1. Jika ingin menangani link ini dari aplikasi iOS Anda, 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 dan yang lebih lama, Anda harus menetapkan ID paket iOS Anda sebagai skema kustom untuk URL masuk.
    4. Untuk informasi selengkapnya, lihat Menerima petunjuk 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. Ini dilakukan dengan menyetel handleCodeInApp ke false di objek FIRActionCodeSettings (Obj-C) atau ActionCodeSettings (Swift). Meskipun ID paket iOS atau nama paket Android tidak diperlukan, namun jika diberikan, pengguna dapat mengalihkan kembali ke aplikasi yang ditentukan saat penyelesaian kode tindakan email.

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

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

Saat menangani tindakan email seperti verifikasi email, kode tindakan dari parameter kueri oobCode harus diurai dari deep link, kemudian diterapkan melalui applyActionCode agar perubahan diterapkan, yaitu email 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, melalui androidInstallIfNotAvailable Anda juga dapat menentukan apakah aplikasi Android akan diinstal atau tidak jika perangkat mendukungnya dan aplikasi belum terinstal. Jika link diklik dari perangkat yang tidak mendukung aplikasi seluler itu, link tersebut akan dibuka dari halaman web. Ini dilakukan dengan menyetel handleCodeInApp ke true di objek FIRActionCodeSettings (Obj-C) atau ActionCodeSettings (Swift). Nama paket Android aplikasi seluler atau ID paket iOS juga harus ditentukan.Jika aplikasi seluler tidak tersedia, URL web fallback yang digunakan di sini adalah yang dikonfigurasi di bagian template tindakan email. URL default disediakan untuk semua project. Lihat menyesuaikan handler email untuk mempelajari lebih lanjut cara menyesuaikan handler tindakan email.

Dalam hal ini, link aplikasi seluler yang dikirim ke pengguna adalah link FDL yang payload-nya adalah URL kode tindakan, yang dikonfigurasi di Console, dengan parameter kueri oobCode, mode, apiKey, dan continueUrl. Parameter yang disebut terakhir ini adalah URL asli yang ditetapkan dalam objek FIRActionCodeSettings (Obj-C) atau ActionCodeSettings (Swift). Meskipun Anda dapat menghalangi dan menangani link masuk dari aplikasi Anda tanpa dependensi tambahan, sebaiknya gunakan library klien FDL untuk mengurai deep link untuk Anda. Kode tindakan dapat diterapkan secara langsung dari aplikasi seluler, mirip dengan ketika ditangani dari alur web seperti dijelaskan di bagian menyesuaikan pengendali email.

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