Bạn có thể truyền trạng thái thông qua URL tiếp tục khi gửi các hành động qua email để đặt lại mật khẩu hoặc xác minh email của người dùng. Điều này cho phép người dùng quay lại ứng dụng sau khi hoàn tất hành động. Ngoài ra, bạn có thể chỉ định việc xử lý đường liên kết hành động trong email trực tiếp từ ứng dụng di động khi ứng dụng đó được cài đặt thay vì trang web.
Điều này có thể cực kỳ hữu ích trong các trường hợp phổ biến sau:
Người dùng hiện chưa đăng nhập có thể đang cố truy cập vào nội dung yêu cầu người dùng phải đăng nhập. Tuy nhiên, người dùng có thể đã quên mật khẩu và do đó kích hoạt quy trình đặt lại mật khẩu. Ở cuối luồng, người dùng muốn quay lại phần ứng dụng mà họ đang cố gắng truy cập.
Ứng dụng chỉ có thể cung cấp quyền truy cập cho các tài khoản đã được xác minh. Ví dụ: ứng dụng bản tin có thể yêu cầu người dùng xác minh email của họ trước khi đăng ký. Người dùng sẽ trải qua quy trình xác minh qua email và dự kiến sẽ được chuyển về ứng dụng để hoàn tất gói thuê bao.
Nhìn chung, khi bắt đầu quy trình đặt lại mật khẩu hoặc xác minh qua email trên một ứng dụng của Apple, người dùng muốn hoàn tất quy trình đó trong ứng dụng; khả năng truyền trạng thái qua URL tiếp tục giúp họ làm được điều này.
Khả năng truyền trạng thái thông qua URL tiếp tục là một tính năng mạnh mẽ mà Firebase Auth cung cấp và có thể nâng cao đáng kể trải nghiệm người dùng.
Truyền trạng thái của URL tiếp tục trong hành động qua email
Để truyền một URL tiếp tục một cách an toàn, bạn cần đưa miền của URL đó vào danh sách trắng trong bảng điều khiển Firebase. Bạn có thể thực hiện việc này trong phần Xác thực bằng cách thêm miền này vào danh sách Miền được uỷ quyền trong thẻ Phương thức đăng nhập nếu miền này chưa có trong danh sách.
Bạn cần cung cấp một thực thể FIRActionCodeSettings
khi gửi email đặt lại mật khẩu hoặc email xác minh. Giao diện này có các thông số sau:
Swift
Thông số | Loại | Mô tả |
---|---|---|
URL |
Chuỗi | Đặt đường liên kết (trạng thái/tiếp tục URL) có ý nghĩa khác nhau trong các ngữ cảnh khác nhau:
|
iOSBundleID |
Chuỗi | Đặt mã nhận dạng gói iOS để giúp Firebase Authentication xác định xem có nên tạo đường liên kết chỉ dành cho web hay đường liên kết dành cho thiết bị di động được mở trên thiết bị Apple hay không |
androidPackageName |
Chuỗi | Đặt tên gói Android để giúp Firebase Authentication xác định xem có nên tạo đường liên kết chỉ dành cho web hay đường liên kết dành cho thiết bị di động được mở trên thiết bị Android hay không |
handleCodeInApp |
Bool | Liệu đường liên kết hành động trong email sẽ được mở trong ứng dụng di động hay đường liên kết web trước. Giá trị mặc định là false. Khi được đặt thành đúng, đường liên kết 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 ứng dụng Android và sẽ được ứng dụng mở nếu được cài đặt. Trong trường hợp sai, mã sẽ được gửi đến tiện ích web trước, sau đó tiếp tục chuyển hướng đến ứng dụng nếu đã cài đặt. |
linkDomain |
Chuỗi | Khi bạn xác định miền liên kết lưu trữ tuỳ chỉnh cho một dự án, hãy chỉ định miền nào sẽ được sử dụng khi một ứng dụng di động được chỉ định mở đường liên kết. Nếu không, miền mặc định sẽ tự động được chọn (ví dụ: PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
Chuỗi | Không dùng nữa. Không chỉ định thông số này. |
Objective-C
Thông số | Loại | Mô tả |
---|---|---|
URL |
NSString | Đặt đường liên kết (trạng thái/tiếp tục URL) có ý nghĩa khác nhau trong các ngữ cảnh khác nhau:
|
iOSBundleID |
NSString | Đặt mã nhận dạng gói iOS để giúp Firebase Authentication xác định xem có nên tạo đường liên kết chỉ dành cho web hay đường liên kết dành cho thiết bị di động được mở trên thiết bị Android hay Apple |
androidPackageName |
NSString | Đặt tên gói Android để giúp Firebase Authentication xác định xem có nên tạo đường liên kết chỉ dành cho web hay đường liên kết dành cho thiết bị di động được mở trên thiết bị Android hay Apple |
handleCodeInApp |
BOOL | Liệu đường liên kết hành động trong email sẽ được mở trong ứng dụng di động hay đường liên kết web trước. Giá trị mặc định là false. Khi được đặt thành đúng, đường liên kết 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 ứng dụng Android và sẽ được ứng dụng mở nếu được cài đặt. Trong trường hợp sai, mã sẽ được gửi đến tiện ích web trước, sau đó tiếp tục chuyển hướng đến ứng dụng nếu đã cài đặt. |
linkDomain |
NSString | Khi bạn xác định miền liên kết Hosting tuỳ chỉnh cho một dự án, hãy chỉ định miền nào sẽ được sử dụng khi một ứng dụng di động được chỉ định mở đường liên kết. Nếu không, miền mặc định sẽ tự động được chọn (ví dụ: PROJECT_ID.firebaseapp.com |
dynamicLinkDomain |
NSString | Không dùng nữa. Không chỉ định thông số này. |
Ví dụ sau đây minh hoạ cách gửi đường liên kết xác minh qua email sẽ mở trong ứng dụng di động trước tiên bằng cách sử dụng miền liên kết Hosting tuỳ chỉnh custom-domain.com
. Đường liên kết sâu sẽ chứa tải trọng URL tiếp tục
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") // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = "custom-domain.com" 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; // Specify a custom Hosting link domain to use. The domain must be // configured in Firebase Hosting and owned by the project. actionCodeSettings.linkDomain = @"custom-domain.com"; [actionCodeSettings setAndroidPackageName:@"com.example.android"]; [user sendEmailVerificationWithActionCodeSettings:actionCodeSettings completion:^(NSError *_Nullable error) { if (error) { // Error occurred. Inspect error.code and handle error. return; } // Email verification sent. }];
Định cấu hình đường liên kết Firebase Hosting
Firebase Authentication sử dụng Firebase Hosting khi gửi một đường liên kết cần được mở trong ứng dụng di động. Để sử dụng tính năng này, bạn cần định cấu hình các đường liên kết Hosting trong bảng điều khiển Firebase.
Định cấu hình ứng dụng của Apple:
- Nếu dự định xử lý các đường liên kết này từ ứng dụng, bạn sẽ cần định cấu hình miền liên kết Hosting dưới dạng Miền được liên kết trong các chức năng của ứng dụng.
- Để biết thêm thông tin về vấn đề này, hãy tham khảo bài viết Hướng dẫn nhận đường liên kết đến trang lưu trữ iOS.
Định cấu hình ứng dụng Android:
- Nếu bạn dự định xử lý các đường liên kết này từ ứng dụng Android, bạn cần chỉ định tên gói của ứng dụng trong phần cài đặt dự án của bảng điều khiển Firebase. Ngoài ra, bạn cần cung cấp SHA-1 và SHA-256 của chứng chỉ ứng dụng.
- Bạn cũng cần định cấu hình bộ lọc ý định cho đường liên kết sâu trong tệp
AndroidManifest.xml
. - Để biết thêm thông tin về vấn đề này, hãy tham khảo bài viết Hướng dẫn nhận đường liên kết đến trang lưu trữ Android.
Xử lý các hành động liên quan đến email trong ứng dụng web
Bạn có thể chỉ định xem bạn muốn xử lý đường liên kết mã hành động từ một ứng dụng web trước, sau đó chuyển hướng đến một trang web hoặc ứng dụng di động khác sau khi hoàn tất thành công hay không, miễn là ứng dụng di động đó có sẵn.
Bạn có thể thực hiện việc này bằng cách đặt handleCodeInApp
thành false
trong đối tượng FIRActionCodeSettings
(Obj-C) hoặc ActionCodeSettings
(Swift). Mặc dù không bắt buộc phải có mã gói hoặc tên gói Android, nhưng việc cung cấp các thông tin này sẽ cho phép người dùng chuyển hướng trở lại ứng dụng đã chỉ định khi hoàn tất mã hành động qua email.
URL web được sử dụng ở đây là URL được định cấu hình trong mục mẫu hành động trong email. Một tài khoản mặc định được cấp cho tất cả dự án. Hãy tham khảo phần tuỳ chỉnh trình xử lý email để tìm hiểu thêm về cách tuỳ chỉnh trình xử lý hành động qua email.
Trong trường hợp này, đường liên kết trong tham số truy vấn continueURL
sẽ là một đường liên kết Hosting có tải trọng là URL
được chỉ định trong đối tượng ActionCodeSettings
.
Khi xử lý các thao tác liên quan đến email, chẳng hạn như xác minh email, bạn cần phân tích cú pháp mã thao tác từ tham số truy vấn oobCode
từ đường liên kết sâu, sau đó áp dụng qua applyActionCode
để thay đổi có hiệu lực, tức là email sẽ được xác minh.
Xử lý các thao tác trên email trong ứng dụng di động
Trước tiên, bạn có thể chỉ định xem có muốn xử lý đường liên kết mã hành động trong ứng dụng dành cho thiết bị di động hay không, miễn là ứng dụng đó đã được cài đặt. Nếu người dùng nhấp vào đường liên kết từ một thiết bị không hỗ trợ ứng dụng di động, thì đường liên kết đó sẽ được mở từ một trang web. Bạn có thể thực hiện việc này bằng cách đặt handleCodeInApp
thành true
trong đối tượng FIRActionCodeSettings
(Obj-C) hoặc ActionCodeSettings
(Swift). Bạn cũng cần chỉ định tên gói Android hoặc mã nhận dạng gói của ứng dụng di động. URL dự phòng trên web được sử dụng ở đây (khi không có ứng dụng di động) là URL được định cấu hình trong phần mẫu hành động trong email. Một giá trị mặc định sẽ được cung cấp cho tất cả dự án. Hãy tham khảo phần tuỳ chỉnh trình xử lý email để tìm hiểu thêm về cách tuỳ chỉnh trình xử lý hành động qua email.
Trong trường hợp này, đường liên kết đến ứng dụng di động được gửi đến người dùng sẽ là một đường liên kết Hosting có tải trọng là URL mã hành động được định cấu hình trong Bảng điều khiển, với các tham số truy vấn oobCode
, mode
, apiKey
và continueUrl
. Đối tượng sau sẽ là URL
ban đầu được chỉ định trong đối tượng FIRActionCodeSettings
(Obj-C) hoặc ActionCodeSettings
(Swift). Bạn có thể áp dụng mã hành động trực tiếp từ một ứng dụng di động tương tự như cách xử lý mã hành động từ luồng web được mô tả trong phần tuỳ chỉnh trình xử lý email.
Khi xử lý các thao tác liên quan đến email, chẳng hạn như xác minh email, bạn cần phân tích cú pháp mã thao tác từ tham số truy vấn oobCode
từ đường liên kết sâu, sau đó áp dụng qua applyActionCode
để thay đổi có hiệu lực, tức là email sẽ được xác minh.