Aplikasi seluler terkadang perlu berinteraksi dengan pengguna, dan meminta pengguna untuk melakukan tindakan tertentu dengan mengirim email.
Firebase Client SDK memberi Anda kemampuan untuk mengirim email yang berisi link untuk reset sandi, verifikasi alamat email, dan login dengan email kepada pengguna. Email berbasis template ini dikirim oleh Google dan memiliki kemampuan penyesuaian yang terbatas.
Jika Anda ingin menggunakan template email dan layanan pengiriman email milik sendiri, halaman ini menjelaskan cara menggunakan Firebase Admin SDK guna menghasilkan link tindakan secara terprogram untuk alur di atas, yang dapat disertakan dalam email untuk pengguna Anda.
Firebase Admin SDK memiliki beberapa manfaat:
- Menyesuaikan template email. Penyesuaian ini termasuk kemampuan untuk menambahkan gaya baru dan branding khusus, mengubah susunan kata dan logo, menyapa pengguna dengan nama depan bukan dengan nama lengkap, dan sebagainya.
- Menerapkan berbagai template sesuai konteks. Misalnya, jika pengguna memverifikasi emailnya untuk berlangganan newsletter, mungkin perlu disediakan konteks dalam isi email. Contoh lainnya adalah login dengan link email, yang dapat dipicu oleh pengguna yang sama atau undangan oleh pengguna lain. Konteks harus disertakan dalam email.
- Melokalkan template email yang disesuaikan.
- Kemampuan untuk menghasilkan link dari lingkungan server yang aman.
- Kemampuan untuk menyesuaikan cara membuka link, melalui aplikasi seluler atau browser, dan cara meneruskan informasi status tambahan, dll.
- Kemampuan untuk menyesuaikan domain link seluler yang digunakan untuk alur aplikasi seluler saat membuat link tindakan email.
Melakukan inisialisasi ActionCodeSettings
Sebelum dapat membuat link tindakan email, Anda mungkin perlu melakukan inisialisasi instance ActionCodeSettings
.
Dengan ActionCodeSettings
, Anda dapat meneruskan status tambahan melalui continue URL, yang dapat diakses setelah pengguna mengklik link email. Dengan begitu, pengguna dapat kembali ke aplikasi setelah tindakan selesai. Selain itu, Anda bisa menentukan apakah akan menangani link tindakan email langsung dari aplikasi seluler saat diinstal, atau dari browser.
Untuk link yang dimaksudkan agar dibuka melalui aplikasi seluler, Anda harus melakukan beberapa tugas untuk mendeteksi link ini dari aplikasi seluler Anda. Baca petunjuk tentang cara mengonfigurasi link seluler untuk tindakan email.
Untuk melakukan inisialisasi instance ActionCodeSettings
, berikan data berikut:
Parameter | Jenis | Deskripsi |
---|---|---|
url |
string | Menetapkan link (status/continue URL) yang memiliki arti berbeda tergantung konteksnya:
|
iOS |
({bundleId: string}|undefined) | Menetapkan ID paket iOS untuk membantu Firebase Authentication dalam menentukan apakah harus membuat link khusus web atau link seluler yang terbuka di perangkat Apple |
android |
({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) | Menetapkan nama paket Android untuk membantu Firebase Authentication dalam menentukan apakah harus membuat link khusus web atau link seluler yang terbuka di perangkat Android |
handleCodeInApp |
(boolean|undefined) | Apakah link tindakan email akan dibuka di aplikasi seluler atau link web terlebih dahulu. Secara default, nilainya adalah false. Saat disetel ke true, link kode tindakan akan dikirim sebagai Link Universal atau Link Aplikasi Android dan akan dibuka oleh aplikasi jika sudah terinstal. Jika disetel ke false, kode akan dikirim ke widget web terlebih dulu, kemudian akan dialihkan ke aplikasi jika terinstal. |
linkDomain |
(string|undefined) | Jika domain link Hosting kustom ditetapkan untuk suatu project, tentukan domain yang akan digunakan saat link dibuka oleh aplikasi seluler tertentu. Jika tidak, domain default akan dipilih secara otomatis (misalnya, PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
(string|undefined) | Tidak digunakan lagi. Jangan tentukan parameter ini. |
Contoh berikut menggambarkan cara mengirimkan link verifikasi email yang akan dibuka di aplikasi seluler terlebih dahulu. Deep link akan berisi payload continue URL https://www.example.com/checkout?cartId=1234
. Domain link Hosting kustom yang digunakan adalah custom-domain.com
, yang harus dikonfigurasi untuk digunakan dengan Firebase Hosting.
Node.js
const actionCodeSettings = {
// URL you want to redirect back to. The domain (www.example.com) for
// this URL must be whitelisted in the Firebase Console.
url: 'https://www.example.com/checkout?cartId=1234',
// This must be true for email link sign-in.
handleCodeInApp: true,
iOS: {
bundleId: 'com.example.ios',
},
android: {
packageName: 'com.example.android',
installApp: true,
minimumVersion: '12',
},
// FDL custom domain.
dynamicLinkDomain: 'coolapp.page.link',
};
Java
ActionCodeSettings actionCodeSettings = ActionCodeSettings.builder()
.setUrl("https://www.example.com/checkout?cartId=1234")
.setHandleCodeInApp(true)
.setIosBundleId("com.example.ios")
.setAndroidPackageName("com.example.android")
.setAndroidInstallApp(true)
.setAndroidMinimumVersion("12")
.setDynamicLinkDomain("coolapp.page.link")
.build();
Python
action_code_settings = auth.ActionCodeSettings(
url='https://www.example.com/checkout?cartId=1234',
handle_code_in_app=True,
ios_bundle_id='com.example.ios',
android_package_name='com.example.android',
android_install_app=True,
android_minimum_version='12',
dynamic_link_domain='coolapp.page.link',
)
Go
actionCodeSettings := &auth.ActionCodeSettings{
URL: "https://www.example.com/checkout?cartId=1234",
HandleCodeInApp: true,
IOSBundleID: "com.example.ios",
AndroidPackageName: "com.example.android",
AndroidInstallApp: true,
AndroidMinimumVersion: "12",
DynamicLinkDomain: "coolapp.page.link",
}
C#
var actionCodeSettings = new ActionCodeSettings()
{
Url = "https://www.example.com/checkout?cartId=1234",
HandleCodeInApp = true,
IosBundleId = "com.example.ios",
AndroidPackageName = "com.example.android",
AndroidInstallApp = true,
AndroidMinimumVersion = "12",
DynamicLinkDomain = "coolapp.page.link",
};
Untuk mempelajari lebih lanjut, baca bagian Meneruskan Status dalam Tindakan Email.
Membuat link email reset sandi
Untuk membuat link reset sandi, berikan email pengguna yang ada dan objek ActionCodeSettings
opsional. Operasi ini akan menghasilkan link tindakan email. Email yang digunakan harus merupakan milik pengguna yang ada.
Node.js
// Admin SDK API to generate the password reset link.
const userEmail = 'user@example.com';
getAuth()
.generatePasswordResetLink(userEmail, actionCodeSettings)
.then((link) => {
// Construct password reset email template, embed the link and send
// using custom SMTP server.
return sendCustomPasswordResetEmail(userEmail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generatePasswordResetLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_password_reset_link(email, action_code_settings)
# Construct password reset email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
Go
email := "user@example.com"
link, err := client.PasswordResetLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct password reset template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GeneratePasswordResetLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Setelah dibuat, link tersebut dapat disertakan di dalam email reset sandi khusus, kemudian dikirim melalui email kepada pengguna terkait menggunakan server SMTP khusus.
Jika Anda tidak menggunakan halaman landing reset sandi default dan membuat pengendali khusus Anda sendiri, lihat cara membuat pengendali tindakan email khusus.
Membuat link verifikasi email
Untuk membuat link verifikasi email, berikan email pengguna yang belum diverifikasi dan objek ActionCodeSettings
opsional. Operasi ini akan menghasilkan link tindakan email.
Email yang digunakan harus merupakan milik pengguna yang ada.
Node.js
// Admin SDK API to generate the email verification link.
const useremail = 'user@example.com';
getAuth()
.generateEmailVerificationLink(useremail, actionCodeSettings)
.then((link) => {
// Construct email verification template, embed the link and send
// using custom SMTP server.
return sendCustomVerificationEmail(useremail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generateEmailVerificationLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_email_verification_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
Go
email := "user@example.com"
link, err := client.EmailVerificationLinkWithSettings(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateEmailVerificationLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Setelah dibuat, link tersebut dapat disertakan di dalam email verifikasi khusus, kemudian dikirim melalui email kepada pengguna terkait menggunakan server SMTP khusus.
Jika Anda tidak menggunakan halaman landing verifikasi email default dan membuat pengendali khusus Anda sendiri, lihat cara membuat pengendali tindakan email khusus.
Membuat link email untuk login
Sebelum dapat mengautentikasi pengguna yang login dengan link email, Anda harus mengaktifkan login dengan link email untuk project Firebase Anda.
Untuk membuat link login, berikan email pengguna dan objek ActionCodeSettings
. Dalam hal ini, objek ActionCodeSettings
wajib ada untuk memberikan informasi halaman apa yang akan terbuka setelah pengguna mengklik link untuk penyelesaian proses login. Operasi ini akan menghasilkan link tindakan email.
Tidak seperti reset sandi dan verifikasi email, email yang digunakan tidak harus milik pengguna yang sudah ada, karena operasi ini dapat digunakan untuk mendaftarkan pengguna baru ke aplikasi Anda melalui link email.
Node.js
// Admin SDK API to generate the sign in with email link.
const useremail = 'user@example.com';
getAuth()
.generateSignInWithEmailLink(useremail, actionCodeSettings)
.then((link) => {
// Construct sign-in with email link template, embed the link and
// send using custom SMTP server.
return sendSignInEmail(useremail, displayName, link);
})
.catch((error) => {
// Some error occurred.
});
Java
String email = "user@example.com";
try {
String link = FirebaseAuth.getInstance().generateSignInWithEmailLink(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link);
} catch (FirebaseAuthException e) {
System.out.println("Error generating email link: " + e.getMessage());
}
Python
email = 'user@example.com'
link = auth.generate_sign_in_with_email_link(email, action_code_settings)
# Construct email from a template embedding the link, and send
# using a custom SMTP server.
send_custom_email(email, link)
Go
email := "user@example.com"
link, err := client.EmailSignInLink(ctx, email, actionCodeSettings)
if err != nil {
log.Fatalf("error generating email link: %v\n", err)
}
// Construct sign-in with email link template, embed the link and send
// using custom SMTP server.
sendCustomEmail(email, displayName, link)
C#
var email = "user@example.com";
var link = await FirebaseAuth.DefaultInstance.GenerateSignInWithEmailLinkAsync(
email, actionCodeSettings);
// Construct email verification template, embed the link and send
// using custom SMTP server.
SendCustomEmail(email, displayName, link);
Setelah dibuat, link tersebut dapat disertakan di dalam email login khusus, kemudian dikirim melalui email kepada pengguna terkait menggunakan server SMTP khusus.
Pelajari lebih lanjut cara mengautentikasi pengguna dengan Firebase menggunakan link email. Hal ini akan membantu memberikan informasi tentang cara menyelesaikan proses login, setelah pengguna mengklik link dan dialihkan kembali ke aplikasi.