Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Membuat Tautan Tindakan Email

Aplikasi seluler terkadang perlu berinteraksi dengan pengguna dan meminta mereka untuk mengambil tindakan tertentu dengan mengirimkan email.

Firebase Client SDK menyediakan kemampuan untuk mengirim email kepada pengguna yang berisi tautan yang dapat mereka gunakan untuk penyetelan ulang sandi, verifikasi alamat email, dan proses masuk berbasis email. Email berbasis template ini dikirim oleh Google dan memiliki kemampuan penyesuaian yang terbatas.

Jika Anda ingin menggunakan template email Anda sendiri dan layanan pengiriman email Anda sendiri, halaman ini menjelaskan cara menggunakan Firebase Admin SDK untuk membuat tautan tindakan secara terprogram untuk alur di atas, yang dapat Anda sertakan dalam email kepada pengguna Anda.

Ini datang dengan manfaat berikut:

  • Sesuaikan template email. Ini termasuk kemampuan untuk menambahkan gaya baru dan merek kustom, mengubah kata-kata dan logo, menyapa pengguna dengan nama depan, bukan nama lengkap, dan seterusnya.
  • Terapkan template yang berbeda tergantung pada konteksnya. Misalnya, jika pengguna memverifikasi email mereka untuk berlangganan buletin, konteksnya mungkin perlu disediakan dalam konten email. Contoh lain adalah link email masuk: dalam satu skenario ini mungkin dipicu oleh pengguna yang sama, atau sebagai undangan oleh pengguna lain. Konteksnya perlu disertakan dalam email.
  • Lokalkan template email yang disesuaikan.
  • Kemampuan untuk menghasilkan tautan dari lingkungan server yang aman.
  • Kemampuan untuk menyesuaikan cara tautan dibuka, melalui aplikasi seluler atau browser, dan cara menyampaikan informasi status tambahan, dll.
  • Kemampuan untuk menyesuaikan domain tautan dinamis yang digunakan untuk alur aplikasi seluler saat membuat tautan tindakan email, dan bahkan menentukan domain tautan dinamis yang berbeda bergantung pada konteks atau aplikasi seluler.

Inisialisasi ActionCodeSettings

Sebelum Anda dapat membuat tautan tindakan email, Anda mungkin perlu menginisialisasi instance ActionCodeSettings .

ActionCodeSettings memungkinkan Anda untuk meneruskan status tambahan melalui URL lanjutan yang dapat diakses setelah pengguna mengeklik tautan email. Ini juga memberi pengguna kemampuan untuk kembali ke aplikasi setelah tindakan selesai. Selain itu, Anda dapat menentukan apakah akan menangani tautan tindakan email langsung dari aplikasi seluler saat diinstal atau dari browser.

Untuk tautan yang dimaksudkan untuk dibuka melalui aplikasi seluler, Anda harus mengaktifkan Firebase Dynamic Links dan melakukan beberapa tugas untuk mendeteksi tautan ini dari aplikasi seluler Anda. Lihat petunjuk tentang cara mengonfigurasi Firebase Dynamic Links untuk tindakan email.

Untuk menginisialisasi instance ActionCodeSettings , berikan data berikut:

Parameter Jenis Keterangan
url rangkaian

Setel tautan (status/lanjutkan URL) yang memiliki arti berbeda dalam konteks berbeda:

  • Saat tautan ditangani di widget tindakan web, ini adalah tautan dalam di parameter kueri continueUrl .
  • Saat tautan ditangani di aplikasi secara langsung, ini adalah parameter kueri continueUrl di tautan dalam Tautan Dinamis.
iOS ({bundleId: string}|tidak terdefinisi) Menetapkan ID bundel. Ini akan mencoba membuka tautan di aplikasi Apple jika sudah terpasang. Aplikasi harus terdaftar di Konsol.
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) Menyetel nama paket Android. Ini akan mencoba membuka tautan di aplikasi Android jika sudah terpasang. Jika installApp diteruskan, itu menentukan apakah akan menginstal aplikasi Android jika perangkat mendukungnya dan aplikasi belum diinstal. Jika bidang ini disediakan tanpa packageName , kesalahan akan muncul yang menjelaskan bahwa packageName harus disediakan bersama dengan bidang ini. Jika minimumVersion ditentukan, dan versi aplikasi yang lebih lama diinstal, pengguna akan dibawa ke Play Store untuk meningkatkan versi aplikasi. Aplikasi Android harus terdaftar di Konsol.
handleCodeInApp (boolean|tidak terdefinisi) Apakah tautan tindakan email akan dibuka di aplikasi seluler atau tautan web terlebih dahulu. Nilai defaultnya salah. Jika disetel ke true, tautan kode tindakan akan dikirim sebagai Tautan Universal atau Tautan Aplikasi Android dan akan dibuka oleh aplikasi jika dipasang. Dalam kasus yang salah, kode akan dikirim ke widget web terlebih dahulu dan kemudian melanjutkan akan dialihkan ke aplikasi jika diinstal.
dynamicLinkDomain (string|tidak terdefinisi) Menyetel domain tautan dinamis (atau subdomain) yang akan digunakan untuk tautan saat ini jika akan dibuka menggunakan Tautan Dinamis Firebase. Karena beberapa domain tautan dinamis dapat dikonfigurasi per proyek, bidang ini menyediakan kemampuan untuk memilih satu secara eksplisit. Jika tidak ada yang disediakan, domain terlama digunakan secara default.

Contoh berikut mengilustrasikan cara mengirim tautan verifikasi email yang akan dibuka di aplikasi seluler terlebih dahulu sebagai Tautan Dinamis Firebase (aplikasi Apple com.example.ios atau aplikasi Android com.example.android tempat aplikasi akan dipasang jika belum terpasang dan versi minimum adalah 12). Tautan dalam akan berisi muatan URL lanjutan https://www.example.com/checkout?cartId=1234 . Domain link dinamis yang digunakan adalah coolapp.page.link , yang harus dikonfigurasi untuk digunakan dengan Firebase Dynamic Links.

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',
};

Jawa

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',
)

Pergi

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, lihat Melewati Status di Tindakan Email .

Untuk membuat tautan pengaturan ulang kata sandi, berikan email pengguna yang ada dan objek ActionCodeSettings opsional. Operasi akan diselesaikan dengan tautan tindakan email. Email yang digunakan harus milik pengguna yang sudah 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.
  });

Jawa

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)

Pergi

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 tautan dibuat, itu dapat dimasukkan ke dalam email pengaturan ulang kata sandi khusus dan kemudian dikirim melalui email ke pengguna yang sesuai menggunakan server SMTP khusus.

Jika Anda tidak menggunakan laman landas penyetelan ulang sandi default dan membuat penangan khusus Anda sendiri, lihat membuat penangan tindakan email khusus .

Untuk membuat tautan verifikasi email, berikan email yang belum diverifikasi milik pengguna yang ada dan objek ActionCodeSettings opsional. Operasi akan diselesaikan dengan tautan tindakan email. Email yang digunakan harus milik pengguna yang sudah 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.
  });

Jawa

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)

Pergi

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 tautan dibuat, tautan dapat dimasukkan ke dalam email verifikasi khusus dan kemudian dikirim melalui email ke pengguna yang sesuai menggunakan server SMTP khusus.

Jika Anda tidak menggunakan laman landas verifikasi email default dan membuat penangan khusus Anda sendiri, lihat membuat penangan tindakan email khusus .

Sebelum Anda dapat mengautentikasi pengguna dengan login link email, Anda harus mengaktifkan login link email untuk project Firebase Anda.

Untuk membuat tautan masuk, berikan email pengguna dan objek ActionCodeSettings . Objek ActionCodeSettings diperlukan dalam hal ini untuk memberikan informasi tentang tempat mengembalikan pengguna setelah tautan diklik untuk penyelesaian masuk. Operasi akan diselesaikan dengan tautan tindakan email.

Tidak seperti penyetelan ulang 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 tautan 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.
  });

Jawa

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)

Pergi

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 tautan dibuat, tautan dapat dimasukkan ke dalam email masuk khusus dan kemudian dikirim melalui email ke pengguna yang sesuai menggunakan server SMTP khusus.

Pelajari lebih lanjut tentang mengautentikasi pengguna dengan Firebase menggunakan tautan email . Ini akan membantu memberikan informasi tentang cara menyelesaikan proses masuk setelah pengguna mengeklik tautan dan dialihkan kembali ke aplikasi.