Trạng thái vượt qua trong các thao tác qua email

Bạn có thể chuyển trạng thái qua URL tiếp tục khi gửi hành động email để đặt lại mật khẩu hoặc xác minh email của người dùng. Điều này cung cấp cho người dùng khả năng quay lại ứng dụng sau khi hành động hoàn tất. Ngoài ra, bạn có thể chỉ định có xử lý liên kết hành động email trực tiếp từ ứng dụng di động khi ứng dụng này được cài đặt thay vì trang web hay không.

Điều này có thể cực kỳ hữu ích trong các tình huống phổ biến sau:

  • Người dùng hiện chưa đăng nhập có thể đang cố truy cập 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. Khi kết thúc quy trình, người dùng mong muốn quay lại phần ứng dụng mà họ đang cố truy cập.

  • Một ứng dụng chỉ có thể cung cấp quyền truy cập vào 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 email và dự kiến ​​sẽ được quay lại ứng dụng để hoàn tất đăng ký của họ.

  • Nói chung, khi người dùng bắt đầu đặt lại mật khẩu hoặc quy trình xác minh email trên ứng dụng Apple, họ mong muốn hoàn thành quy trình trong ứng dụng; khả năng chuyển trạng thái qua URL tiếp tục giúp điều này trở nên khả thi.

Khả năng chuyể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.

Chuyển URL trạng thái/tiếp tục trong các hành động email

Để chuyển URL tiếp tục một cách an toàn, miền cho URL sẽ cần phải được đưa vào danh sách trắng trong bảng điều khiển Firebase . Việc này được thực hiện 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 ủy quyền trong tab Phương thức đăng nhập nếu nó chưa có ở đó.

Cần phải cung cấp phiên bản 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 tham số sau:

Nhanh

Tham số Kiểu Sự miêu tả
URL Sợi dây

Đặt liên kết (URL trạng thái/tiếp tục) có ý nghĩa khác nhau trong các ngữ cảnh khác nhau:

  • Khi liên kết được xử lý trong tiện ích hành động trên web, đây là liên kết sâu trong tham số truy vấn continueUrl .
  • Khi liên kết được xử lý trực tiếp trong ứng dụng, đây là tham số truy vấn continueUrl trong liên kết sâu của Liên kết động.
iOSBundleID Sợi dây Đặt ID gói. Điều này sẽ cố gắng mở liên kết trong ứng dụng Apple nếu nó được cài đặt. Ứng dụng cần phải được đăng ký trong Bảng điều khiển. Nếu không có ID gói nào được cung cấp thì giá trị của trường này sẽ được đặt thành ID gói của gói chính của Ứng dụng.
androidPackageName Sợi dây Đặt tên gói Android. Điều này sẽ cố gắng mở liên kết trong ứng dụng Android nếu nó được cài đặt.
androidInstallIfNotAvailable Bool Chỉ định có cài đặt ứng dụng Android hay không nếu thiết bị hỗ trợ ứng dụ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ó Tên gói, thì sẽ xuất hiện lỗi giải thích rằng Tên gói phải được cung cấp cùng với trường này.
androidMinimumVersion Sợi dây Phiên bản tối thiểu của ứng dụng được hỗ trợ trong quy trình này. Nếu phiên bản tối thiểu được chỉ định và phiên bản cũ hơn của ứng dụng được cài đặt thì người dùng sẽ được đưa tới Cửa hàng Play để nâng cấp ứng dụng. Ứng dụng Android cần phải được đăng ký trong Bảng điều khiển.
handleCodeInApp Bool Liên kết hành động email sẽ được mở trong ứng dụng di động hay liên kết web trước tiên. Mặc định này sai. Khi được đặt thành true, liên kết mã hành động sẽ được gửi dưới dạng Liên kết chung hoặc 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 sẽ chuyển hướng đến ứng dụng nếu được cài đặt.
dynamicLinkDomain Sợi dây Đặt miền liên kết động (hoặc tên miền phụ) để sử dụng cho liên kết hiện tại nếu nó được mở bằng Liên kết động Firebase. Vì nhiều miền liên kết động có thể được cấu hình cho mỗi dự án nên trường này cung cấp khả năng chọn một miền một cách rõ ràng. Nếu không được cung cấp thì tên miền đầu tiên sẽ được sử dụng theo mặc định.

Mục tiêu-C

Tham số Kiểu Sự miêu tả
URL NSString

Đặt liên kết (URL trạng thái/tiếp tục) có ý nghĩa khác nhau trong các ngữ cảnh khác nhau:

  • Khi liên kết được xử lý trong tiện ích hành động trên web, đây là liên kết sâu trong tham số truy vấn continueUrl .
  • Khi liên kết được xử lý trực tiếp trong ứng dụng, đây là tham số truy vấn continueUrl trong liên kết sâu của Liên kết động.
iOSBundleID NSString Đặt ID gói. Điều này sẽ cố gắng mở liên kết trong ứng dụng Apple nếu nó được cài đặt. Ứng dụng cần phải được đăng ký trong Bảng điều khiển.
androidPackageName NSString Đặt tên gói Android. Điều này sẽ cố gắng mở liên kết trong ứng dụng Android nếu nó được cài đặt.
androidInstallIfNotAvailable BOOL chỉ định có cài đặt ứng dụng Android hay không nếu thiết bị hỗ trợ ứng dụ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ó Tên gói, thì sẽ xuất hiện lỗi giải thích rằng Tên gói phải được cung cấp cùng với trường này.
androidMinimumVersion NSString Phiên bản tối thiểu của ứng dụng được hỗ trợ trong quy trình này. Nếu phiên bản tối thiểu được chỉ định và phiên bản cũ hơn của ứng dụng được cài đặt thì người dùng sẽ được đưa tới Cửa hàng Play để nâng cấp ứng dụng. Ứng dụng Android cần phải được đăng ký trong Bảng điều khiển.
handleCodeInApp BOOL Liên kết hành động email sẽ được mở trong ứng dụng di động hay liên kết web trước tiên. Mặc định này sai. Khi được đặt thành true, liên kết mã hành động sẽ được gửi dưới dạng Liên kết chung hoặc 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 sẽ chuyển hướng đến ứng dụng nếu được cài đặt.
dynamicLinkDomain NSString Đặt miền liên kết động (hoặc tên miền phụ) để sử dụng cho liên kết hiện tại nếu nó được mở bằng Liên kết động Firebase. Vì nhiều miền liên kết động có thể được cấu hình cho mỗi dự án nên trường này cung cấp khả năng chọn một miền một cách rõ ràng. Nếu không được cung cấp thì tên miền đầu tiên sẽ được sử dụng theo mặc định.

Ví dụ sau minh họa cách gửi liên kết xác minh 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 bằng cách sử dụng miền liên kết động tùy chỉnh example.page.link (ứng dụng iOS com.example.ios hoặc ứng dụng Android com.example.android nơi ứ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 ). 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 .

Nhanh


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,
                                         minimumVersion:"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.
})

Mục tiêu-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 sử dụng Liên kết động Firebase khi gửi liên kết được mở trong ứng dụng di động. Để sử dụng tính năng này, Liên kết động cần được định cấu hình trong Bảng điều khiển Firebase.

  1. Kích hoạt Liên kết động Firebase:

    1. Trong bảng điều khiển Firebase , hãy mở phần Liên kết động .
    2. Nếu bạn chưa chấp nhận các điều khoản của Liên kết động và đã tạo miền Liên kết động, hãy thực hiện ngay bây giờ.

      Nếu bạn đã tạo miền Liên kết động, hãy lưu ý đến nó. Miền Liên kết động thường trông giống như ví dụ sau:

      example.page.link

      Bạn sẽ cần giá trị này khi định cấu hình ứng dụng Apple hoặc Android của mình để chặn liên kết đến.

  2. Cấu hình ứng dụng Android:

    1. Nếu bạn dự định xử lý các liên kết này từ ứng dụng Android của mình thì tên gói Android cần được chỉ định trong cài đặt dự án Bảng điều khiển Firebase. Ngoài ra, cần phải cung cấp SHA-1 và SHA-256 của chứng chỉ ứng dụng.
    2. Bạn cũng sẽ cần định cấu hình bộ lọc ý định cho liên kết sâu trong tệp AndroidManifest.xml của mình.
    3. Để biết thêm về điều này, hãy tham khảo Hướng dẫn nhận liên kết động của Android .
  3. Cấu hình ứng dụng Apple:

    1. Nếu bạn dự định xử lý các liên kết này từ ứng dụng của mình thì ID gói cần phải được chỉ định trong cài đặt dự án Bảng điều khiển Firebase. Ngoài ra, ID App Store và ID nhóm nhà phát triển Apple cũng cần được chỉ định.
    2. Bạn cũng sẽ cần định cấu hình miền liên kết phổ quát FDL làm Miền liên kết trong khả năng ứng dụng của mình.
    3. Nếu dự định phân phối ứng dụng của mình cho iOS phiên bản 8 trở xuống, bạn sẽ cần đặt ID gói của mình làm lược đồ tùy chỉnh cho các URL đến.
    4. Để biết thêm về điều này, hãy tham khảo Hướng dẫn nhận liên kết động trên nền tảng Apple .

Xử lý các tác vụ email trong ứng dụng web

Bạn có thể chỉ định xem bạn có muốn xử lý liên kết mã hành động từ ứng dụng web trước không, 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, miễn là ứng dụng di động đó có sẵn. Điều này được thực hiện 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ó ID gói hoặc tên gói Android nhưng việc cung cấp chúng sẽ cho phép người dùng chuyển hướng quay lại ứng dụng được 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 phần mẫu hành động email. Một cái mặc định được cung cấp cho tất cả các dự án. Tham khảo tùy chỉnh trình xử lý email để tìm hiểu thêm về cách tùy chỉnh trình xử lý hành động email.

Trong trường hợp này, liên kết trong tham số truy vấn continueURL sẽ là liên kết FDL có tải trọng là URL được chỉ định trong đối tượng ActionCodeSettings . Mặc dù bạn có thể chặn và xử lý liên kết đến từ ứng dụng của mình mà không cần bất kỳ sự phụ thuộc bổ sung nào, nhưng chúng tôi khuyên bạn nên sử dụng thư viện ứng dụng khách FDL để phân tích cú pháp liên kết sâu cho bạn.

Khi xử lý các tác vụ email như xác minh email, mã hành động từ tham số truy vấn oobCode cần được phân tích cú pháp từ liên kết sâu rồi áp dụng qua applyActionCode để thay đổi có hiệu lực, tức là email cần được xác minh.

Xử lý các tác vụ email trong ứng dụng di động

Bạn có thể chỉ định xem bạn có muốn xử lý liên kết mã hành động trong ứng dụng di động của mình trước hay không, miễn là nó đã được cài đặt. Với các ứng dụng Android, bạn cũng có khả năng chỉ định thông qua androidInstallIfNotAvailable rằng ứng dụng sẽ được cài đặt nếu thiết bị hỗ trợ và ứng dụng chưa được cài đặt. Nếu liên kết được nhấp vào từ một thiết bị không hỗ trợ ứng dụng di động thì liên kết đó sẽ được mở từ một trang web. Điều này được thực hiện bằng cách đặt handleCodeInApp thành true trong đối tượng FIRActionCodeSettings (Obj-C) hoặc ActionCodeSettings (Swift). Tên gói hoặc ID gói Android của ứng dụng di động cũng cần phải được chỉ định. URL web dự phòng được sử dụng ở đây, khi không có ứng dụng di động nào, là URL được định cấu hình trong phần mẫu tác vụ email. Một cái mặc định được cung cấp cho tất cả các dự án. Tham khảo tùy chỉnh trình xử lý email để tìm hiểu thêm về cách tùy chỉnh trình xử lý hành động email.

Trong trường hợp này, liên kết ứng dụng dành cho thiết bị di động được gửi tới người dùng sẽ là liên kết FDL 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 , apiKeycontinueUrl . URL sau sẽ là URL gốc được chỉ định trong đối tượng FIRActionCodeSettings (Obj-C) hoặc ActionCodeSettings (Swift). Mặc dù bạn có thể chặn và xử lý liên kết đến từ ứng dụng của mình mà không cần bất kỳ sự phụ thuộc bổ sung nào, nhưng chúng tôi khuyên bạn nên sử dụng thư viện ứng dụng khách FDL để phân tích cú pháp liên kết sâu cho bạn. Mã hành động có thể được áp dụng trực tiếp từ ứng dụng di động tương tự như cách xử lý mã từ luồng web được mô tả trong phần tùy chỉnh trình xử lý email .

Khi xử lý các tác vụ email chẳng hạn như xác minh email, mã hành động từ tham số truy vấn oobCode cần được phân tích cú pháp từ liên kết sâu rồi áp dụng qua applyActionCode để thay đổi có hiệu lực, tức là email cần được xác minh.