Trạng thái chuyển trong thao tác qua email

Bạn có thể truyền state thông qua URL tiếp nối khi gửi các hành động trong email để đặt lại mật khẩu hoặc xác minh email của người dùng. Điều này giúp người dùng có thể quay lại ứng dụng sau khi hoàn tất hành động. Ngoài ra, bạn có thể chỉ định xem có xử lý đường liên kết hành động trong email trực tiếp từ một ứng dụng di động khi ứng dụng đó được cài đặt hay không thay vì xử lý từ một 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:

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

  • Một ứng dụng chỉ có thể cho phép truy cập vào các tài khoản đã xác minh. Ví dụ: bản tin có thể yêu cầu người dùng xác minh email trước khi đăng ký. Người dùng sẽ thực hiện quy trình xác minh email và mong muốn quay lại ứng dụng để hoàn tất việc đăng ký.

  • Trong các trường hợp khác, người dùng có thể đã bắt đầu quy trình trên thiết bị di động và mong muốn sau khi xác minh sẽ quay lại ứng dụng di động thay vì trình duyệt.

Khả năng truyền state thông qua URL tiếp nối là một tính năng mạnh mẽ mà Firebase Xác thực 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 nối trong các hành động trong email

Để truyền URL tiếp nối một cách an toàn, bạn cần thêm miền cho URL đó làm miền được cho phép:

  1. Trong bảng điều khiển Firebase, hãy chuyển đến thẻ Security > Authentication > Settings.

  2. Trong phần Authorized domains (Miền được cho phép), hãy nhấp vào Add domain (Thêm miền) rồi thêm URL.

Bạn cần cung cấp một thực thể firebase.auth.ActionCodeSettings 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:

Tham số Loại Mô tả
url chuỗi

Đặt đường liên kết (state/URL tiếp nối) có ý nghĩa khác nhau trong từng ngữ cảnh:

  • Khi đường liên kết được xử lý trong các tiện ích hành động trên web, đây là đường liên kết sâu trong tham số truy vấn continueUrl.
  • Khi đường liên kết được xử lý trực tiếp trong ứng dụng, đây là tham số truy vấn continueUrl trong đường liên kết sâu của đường liên kết Hosting.
iOS ({bundleId: string}|undefined) Đặ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
android ({packageName: string, installApp:boolean|undefined, minimumVersion: string|undefined}|undefined) Đặ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 (boolean|undefined) Đườ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 trên web trước. Giá trị mặc định là "false". Khi được đặt thành "true", đườ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 trong ứng dụng Android và sẽ được ứng dụng mở nếu ứng dụng đó được cài đặt. Trong trường hợp "false", mã sẽ được gửi đến tiện ích trên web trước, sau đó khi tiếp tục, mã sẽ chuyển hướng đến ứng dụng nếu ứng dụng đó được cài đặt.
linkDomain (string|undefined) Khi các miền đường liên kết Hosting tuỳ chỉnh được xác định cho một dự án, hãy chỉ định miền cần sử dụng khi đường liên kết được mở bằng một ứng dụng di động cụ thể. Nếu không, miền mặc định sẽ được tự động chọn (ví dụ: PROJECT_ID.firebaseapp.com).
dynamicLinkDomain (string|undefined) Không dùng nữa. Đừng chỉ định tham số này.

Ví dụ sau đây minh hoạ cách gửi đường liên kết xác minh email sẽ mở trong ứng dụng di động trước bằng miền Hosting tuỳ chỉnh custom-domain.com. Đường liên kết sâu sẽ chứa tải trọng URL tiếp nối https://www.example.com/?email=user@example.com.

const actionCodeSettings = {
  url: 'https://www.example.com/?email=' + firebase.auth().currentUser.email,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
  },
  handleCodeInApp: true,
  // Specify a custom Hosting link domain to use. The domain must be
  // configured in Firebase Hosting and owned by the project.
  linkDomain: "custom-domain.com"
};
firebase.auth().currentUser.sendEmailVerification(actionCodeSettings)
  .then(function() {
    // Verification email sent.
  })
  .catch(function(error) {
    // Error occurred. Inspect error.code.
  });

Firebase Authentication sử dụng Firebase Hosting khi gửi đường liên kết được dùng để 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 đường liên kết Lưu trữ trong bảng điều khiển Firebase.

  1. Định cấu hình ứng dụng Android:

    1. Nếu bạn dự định xử lý các đường liên kết này từ ứng dụng Android, thì 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.
    2. 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.
    3. Để biết thêm thông tin về vấn đề này, hãy tham khảo hướng dẫn Nhận đường liên kết Lưu trữ Android.
  2. Định cấu hình ứng dụng iOS:

    1. Nếu bạn dự định xử lý các đường liên kết này từ ứng dụng iOS, thì bạn sẽ cần định cấu hình miền đường liên kết Hosting làm Miền được liên kết trong các chức năng của ứng dụng.
    2. Để biết thêm thông tin về vấn đề này, hãy tham khảo hướng dẫn Nhận đường liên kết Lưu trữ iOS.

Xử lý các hành động trong email trong ứng dụng web

Bạn có thể chỉ định xem có muốn xử lý đường liên kết mã hành động từ ứng dụng web trước rồi 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 firebase.auth.ActionCodeSettings. Mặc dù không bắt buộc phải có mã nhận dạng gói iOS hoặc tên gói Android, nhưng việc cung cấp các mã 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 trong email.

URL trên web được sử dụng ở đây là URL được định cấu hình trong phần mẫu hành động trong email. Một URL mặc định được cung cấp cho tất cả các dự án. Hãy tham khảo bài viết 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 trong email.

Trong trường hợp này, đường liên kết trong tham số truy vấn continueUrl sẽ là đường liên kết Lưu trữ có tải trọng là URL được chỉ định trong đối tượng ActionCodeSettings.

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

Xử lý các hành động trong email trong ứng dụng di động

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 di động trước hay không, miễn là ứng dụng đó được cài đặt. Nếu bạn nhấp vào đường liên kết trên một thiết bị không hỗ trợ ứng dụng di động, thì đường liên kết đó sẽ được mở trên 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 firebase.auth.ActionCodeSettings. Bạn cũng cần chỉ định tên gói Android hoặc mã nhận dạng gói iOS của ứng dụng di động.

URL trên web dự phòng đượ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 URL mặc định được cung cấp cho tất cả các dự án. Hãy tham khảo bài viết 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 trong email.

Trong trường hợp này, đường liên kết ứng dụng di động được gửi cho người dùng sẽ là đường liên kết Hosting có tải trọng là URL của 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. Tham số sau sẽ là URL ban đầu được chỉ định trong đối tượng ActionCodeSettings. Bạn có thể áp dụng 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ã hành động từ luồng trên web được mô tả trong phần tuỳ chỉnh trình xử lý email.

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