Đôi khi, ứng dụng di động cần tương tác với người dùng và nhắc họ thực hiện bằng cách gửi email.
SDK ứng dụng của Firebase cung cấp khả năng gửi cho người dùng email có chứa mà họ có thể sử dụng để đặt lại mật khẩu, xác minh địa chỉ email và đăng nhập dựa trên email. Các email dựa trên mẫu này do Google gửi và có khả năng tuỳ chỉnh bị hạn chế.
Nếu bạn muốn sử dụng các mẫu email của riêng mình và khả năng gửi email của riêng bạn trang web này giải thích cách sử dụng SDK quản trị của Firebase để tạo liên kết hành động cho các quy trình ở trên theo cách lập trình mà bạn có thể gửi vào email gửi cho người dùng.
Điều này đi kèm với những lợi ích sau:
- Tuỳ chỉnh mẫu email. Điều này bao gồm khả năng thêm kiểu mới và xây dựng thương hiệu tuỳ chỉnh, thay đổi từ ngữ và biểu trưng, đề cập đến người dùng bằng tên họ và tên, v.v.
- Áp dụng các mẫu khác nhau tuỳ theo ngữ cảnh. Ví dụ: nếu người dùng là xác minh email để đăng ký nhận bản tin thì ngữ cảnh có thể cần phải được cung cấp trong nội dung email. Một ví dụ khác là đăng nhập bằng đường liên kết trong email: trong một tình huống này có thể do cùng một người dùng kích hoạt hoặc dưới dạng lời mời của một người khác người dùng. Bạn cần phải thêm bối cảnh vào email.
- Bản địa hoá mẫu email tuỳ chỉnh.
- Có thể tạo đường liên kết từ một môi trường máy chủ bảo mật.
- Có thể tuỳ chỉnh cách mở đường liên kết, thông qua ứng dụng dành cho thiết bị di động hoặc trình duyệt và cách chuyển thông tin bổ sung về trạng thái, v.v.
- Khả năng tuỳ chỉnh miền đường liên kết động dùng cho các luồng ứng dụng di động khi tạo đường liên kết hành động qua email và thậm chí chỉ định một đường liên kết động khác tùy thuộc vào ngữ cảnh hoặc ứng dụng dành cho thiết bị di động.
Khởi chạy ActionCodeSettings
Để có thể tạo đường liên kết hành động qua email, bạn có thể cần khởi chạy một
Thực thể ActionCodeSettings
.
ActionCodeSettings
cho phép bạn chuyển trạng thái bổ sung thông qua một URL tiếp tục
có thể truy cập được sau khi người dùng nhấp vào đường liên kết trong email. Việc này cũng cung cấp cho người dùng
khả năng quay lại ứng dụng sau khi hoàn thành hành động. Ngoài ra,
bạn có thể chỉ định xem có xử lý đường liên kết hành động qua email hay không trực tiếp từ thiết bị di động
khi ứng dụng được cài đặt hoặc từ trình duyệt.
Đối với những đường liên kết sẽ được mở thông qua ứng dụng di động, bạn cần bật Liên kết động của Firebase và thực hiện một số thao tác để phát hiện các liên kết này từ dành cho thiết bị di động. Hãy tham khảo hướng dẫn về cách định cấu hình Liên kết động của Firebase để thao tác với email.
Để khởi tạo một thực thể ActionCodeSettings
, hãy cung cấp dữ liệu sau:
Thông số | Loại | Mô tả |
---|---|---|
url |
chuỗi | Đặt đường liên kết (URL trạng thái/URL tiếp tục) có các ý nghĩa khác nhau trong các ngữ cảnh khác nhau:
|
iOS |
({bundleId: string}|không xác định) | Đặt mã nhận dạng gói. Thao tác này sẽ cố mở đường liên kết trong một ứng dụng của Apple nếu ứng dụng sẽ được cài đặt. Bạn cần đăng ký ứng dụng này trong Console. |
android |
({packageName: string, installApp:boolean|không xác định, MinimumVersion: chuỗi|không xác định}|không xác định) | Đặt tên gói Android. Thao tác này sẽ cố mở đường liên kết trong
Ứng dụng Android nếu ứng dụng này đã được cài đặt. Nếu installApp được truyền, thì
chỉ định xem có cài đặt ứng dụng Android nếu thiết bị hỗ trợ hay không và
ứng dụng chưa được cài đặt. Nếu trường này được cung cấp mà không có
packageName , sẽ xảy ra một lỗi giải thích rằng
Bạn phải cung cấp packageName cùng với trường này.
Nếu bạn chỉ định minimumVersion và một phiên bản cũ của
sau khi cài đặt xong, người dùng sẽ được đưa đến Cửa hàng Play để nâng cấp ứng dụng.
Bạn cần đăng ký ứng dụng Android trong Console. |
handleCodeInApp |
(boolean|không xác định) | Đường liên kết hành động liên quan đến email sẽ được mở trong ứng dụng di động hay web liên kết đầu tiên. Giá trị mặc định là "false". Khi bạn đặt chính sách này thành true, đường liên kết đến mã hành động sẽ được gửi dưới dạng Đường liên kết phổ quát hoặc Đường liên kết trong ứng dụng Android và sẽ được mở của ứng dụng nếu đã cài đặt. Trong trường hợp sai, mã sẽ được gửi đến tiện ích web trước rồi tiếp tục sẽ được chuyển hướng đến ứng dụng. . |
dynamicLinkDomain |
(chuỗi|không xác định) | Đặt miền đường liên kết động (hoặc miền con) để sử dụng cho đường liên kết hiện tại nếu bạn mở tài khoản đó bằng Liên kết động của Firebase. Dưới dạng nhiều thành phần linh động có thể định cấu hình các miền liên kết theo từng dự án, trường này cung cấp khả năng chọn một cách rõ ràng. Nếu không có miền nào được cung cấp, thì miền cũ nhất được sử dụng theo mặc định. |
Ví dụ sau minh hoạ cách gửi đường liên kết xác minh qua email
sẽ mở trong ứng dụng dành cho thiết bị di động trước tiên dưới dạng Liên kết động Firebase (Apple
ứng dụng com.example.ios
hoặc ứng dụng Android com.example.android
, trong đó ứng dụng sẽ
cài đặt nếu chưa được cài đặt và phiên bản tối thiểu là 12). Đường liên kết sâu
sẽ chứa tải trọng URL tiếp tục
https://www.example.com/checkout?cartId=1234
. Miền liên kết động được sử dụng là
coolapp.page.link
, bạn phải định cấu hình để sử dụng với Firebase Dynamic
Đường liên kết.
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',
)
Tiến hành
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",
};
Để tìm hiểu thêm, hãy xem Trạng thái chuyển trong thao tác qua email.
Tạo liên kết email đặt lại mật khẩu
Để tạo đường liên kết đặt lại mật khẩu, hãy cung cấp địa chỉ email của người dùng hiện tại và
đối tượng ActionCodeSettings
không bắt buộc. Thao tác sẽ được giải quyết bằng email
hành động. Email bạn dùng phải thuộc về một người dùng hiện tại.
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)
Tiến hành
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);
Sau khi tạo, bạn có thể chèn đường liên kết vào mục đặt lại mật khẩu tuỳ chỉnh email rồi gửi email tới người dùng tương ứng bằng máy chủ SMTP tuỳ chỉnh.
Nếu bạn không sử dụng trang đích đặt lại mật khẩu mặc định và tạo trình xử lý tuỳ chỉnh riêng, hãy xem tạo trình xử lý thao tác tuỳ chỉnh cho email.
Tạo đường liên kết xác minh qua email
Để tạo đường liên kết xác minh email, hãy cung cấp thông tin chưa được xác minh của người dùng hiện tại
email và một đối tượng ActionCodeSettings
(không bắt buộc). Thao tác sẽ giải quyết
bằng đường liên kết hành động qua email.
Email bạn dùng phải thuộc về một người dùng hiện tại.
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)
Tiến hành
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);
Sau khi tạo, bạn có thể chèn đường liên kết này vào quy trình xác minh tuỳ chỉnh email rồi gửi email tới người dùng tương ứng bằng máy chủ SMTP tuỳ chỉnh.
Nếu bạn không sử dụng trang đích và phiên bản xác minh email mặc định trình xử lý tùy chỉnh của riêng bạn, hãy xem tạo trình xử lý thao tác tuỳ chỉnh cho email.
Tạo đường liên kết đến email để đăng nhập
Để có thể xác thực người dùng bằng thông tin đăng nhập bằng đường liên kết email, bạn cần bật tính năng đăng nhập bằng đường liên kết email cho dự án Firebase của bạn.
Để tạo đường liên kết đăng nhập, hãy cung cấp địa chỉ email của người dùng và ActionCodeSettings
. Trong trường hợp này, bạn bắt buộc phải có đối tượng ActionCodeSettings
để cung cấp
thông tin về nơi trả lại người dùng sau khi nhấp vào đường liên kết để đăng nhập
hoàn thành. Thao tác này sẽ được giải quyết bằng đường liên kết hành động qua email.
Không giống như đặt lại mật khẩu và xác minh email, email được sử dụng không nhất thiết phải thuộc về một người dùng hiện tại, vì thao tác này có thể được sử dụng để đăng ký người dùng mới vào ứng dụng của bạn qua liên kết 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)
Tiến hành
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);
Sau khi tạo, bạn có thể chèn đường liên kết đó vào email đăng nhập tuỳ chỉnh rồi gửi email tới người dùng tương ứng bằng máy chủ SMTP tuỳ chỉnh.
Tìm hiểu thêm về xác thực người dùng bằng Firebase bằng đường liên kết email. Điều này sẽ giúp cung cấp thông tin về cách hoàn tất quy trình đăng nhập sau khi người dùng nhấp vào đường liên kết rồi được chuyển hướng trở lại ứng dụng.