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

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

  • Người dùng hiện chưa đăng nhập có thể đang cố gắng 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 của họ 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ọ trước đó đang cố gắng truy cập.

  • Ứng dụng chỉ có thể cung cấp quyền truy cập vào các tài khoản đã xác minh. Cho ví dụ: một bản tin có thể yêu cầu người dùng xác minh email của họ trước đang đăng ký. Người dùng sẽ thực hiện quy trình xác minh email và kỳ vọng quay lại ứng dụng để hoàn tất gói thuê bao của họ.

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

Có khả năng chuyển trạng thái qua URL tiếp tục là một tính năng mạnh mẽ Tính năng Xác thực Firebase cung cấp và có thể cải thiện đá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 cần phải có trong danh sách cho phép 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 phần danh sách Miền được uỷ quyền trong thẻ Phương thức đăng nhập nếu chưa có.

Một ActionCodeSettings cần cung cấp đối tượng khi gửi email đặt lại mật khẩu hoặc email xác minh. Bạn có thể tạo mã bằng ActionCodeSettings.Builder được liên kết chứa các phương thức sau:

Phương thức Mô tả
setUrl(String url)

Đặ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:

  • Khi liên kết được xử lý trong các tiện ích thao tác trên web, đây là 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 liên kết sâu của Đường liên kết động.
setIOSBundleId(String iOSBundleId) Đặt mã nhận dạng gói iOS. Thao tác này sẽ cố mở đường liên kết trong một ứng dụng iOS nếu ứng dụng sẽ được cài đặt. Bạn cần đăng ký ứng dụng dành cho iOS trong Console.
setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) Đặt tên gói Android. Thao tác này sẽ cố mở đường liên kết trong Android nếu ứng dụng này đã được cài đặt. Nếu bạn đặt installIfNotAvailable thành true, thì thuộc tính này sẽ chỉ định liệu 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 maxVersion được chỉ định, và phiên bản cũ của ứng dụng được cài đặt, người dùng sẽ được chuyển đến Cửa hàng Play để nâng cấp ứng dụng. Bạn cần đăng ký ứng dụng Android trong Play Console.
setHandleCodeInApp(boolean status) Đườ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. .
setDynamicLinkDomain(String dynamicLinkDomain) Đặ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, miền đầu tiên đượ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 (ứng dụng iOS com.example.ios hoặc ứng dụng Android com.example.android). Chiến lược phát hành đĩa đơn đườ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.

Kotlin+KTX

val auth = Firebase.auth
val user = auth.currentUser!!

val url = "http://www.example.com/verify?uid=" + user.uid
val actionCodeSettings = ActionCodeSettings.newBuilder()
    .setUrl(url)
    .setIOSBundleId("com.example.ios")
    // The default for this is populated with the current android package name.
    .setAndroidPackageName("com.example.android", false, null)
    .build()

user.sendEmailVerification(actionCodeSettings)
    .addOnCompleteListener { task ->
        if (task.isSuccessful) {
            Log.d(TAG, "Email sent.")
        }
    }

Java

FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();

String url = "http://www.example.com/verify?uid=" + user.getUid();
ActionCodeSettings actionCodeSettings = ActionCodeSettings.newBuilder()
        .setUrl(url)
        .setIOSBundleId("com.example.ios")
        // The default for this is populated with the current android package name.
        .setAndroidPackageName("com.example.android", false, null)
        .build();

user.sendEmailVerification(actionCodeSettings)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Log.d(TAG, "Email sent.");
                }
            }
        });

Tính năng Xác thực Firebase sử dụng Liên kết động Firebase khi gửi một được mở trong ứng dụng dành cho thiết bị di động. Để sử dụng . Bạn cần định cấu hình Liên kết động trong Bảng điều khiển của Firebase.

  1. Bật liên kết động của Firebase:

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

      Nếu bạn đã tạo một miền Dynamic Links, hãy ghi lại miền đó. Một Dynamic Links thường có dạ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 để chặn đường liên kết đến.

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

    1. Nếu bạn định xử lý các liên kết này từ ứng dụng Android của mình, Bạn cần chỉ định tên gói Android trong Bảng điều khiển của Firebase phần cài đặt dự án. Ngoài ra, SHA-1 và SHA-256 của ứng dụng cần được cung cấp chứng chỉ.
    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 của bạn.
    3. Để biết thêm thông tin về vấn đề này, hãy tham khảo Nhận hướng dẫn về Đường liên kết động của Android.
  3. Định cấu hình ứng dụng iOS:

    1. Nếu bạn dự định xử lý các liên kết này từ ứng dụng iOS của mình, Bạn cần chỉ định mã gói iOS trong Bảng điều khiển của Firebase phần cài đặt dự án. Ngoài ra, Mã App Store và Nhà phát triển của Apple Bạn cũng cần chỉ định mã nhóm.
    2. Bạn cũng cần phải định cấu hình miền đường liên kết phổ quát FDL dưới dạng Miền được liên kết trong các chức năng của ứng dụng.
    3. Nếu bạn 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 mã nhận dạng gói iOS làm lược đồ tuỳ chỉnh cho URL.
    4. Để biết thêm thông tin về vấn đề này, hãy tham khảo Nhận hướng dẫn về Đường liên kết động của iOS.

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

Bạn có thể chỉ định xem bạn có muốn xử lý đường liên kết mã hành động trên web hay không ứng dụng của bạn rồi sau đó chuyển hướng đến một trang web hoặc ứng dụng dành cho thiết bị di động khác sau khi hoàn tất thành công, miễn là ứng dụng dành cho thiết bị di động có sẵn. Bạn có thể thực hiện việc này bằng cách gọi setHandleCodeInApp(false) trong phần ActionCodeSettings.Builder . 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 chúng 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 dùng ở đây là URL được định cấu hình trong các mẫu thao tác với email . Một tài sản mặc định được cấp phép cho mọi dự án. Tham khảo tuỳ chỉnh trình xử lý email để tìm hiểu thêm về cách tuỳ chỉnh trình xử lý thao tác qua email.

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

Khi xử lý các thao tác qua email như xác minh email, mã hành động trong Tham số truy vấn oobCode cần được phân tích cú pháp từ đường 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 hành động với email trong ứng dụng dành cho thiết bị 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 bạn, miễn là ứng dụng đó đã được cài đặt. Với các ứng dụng Android, bạn cũng có thể chỉ định qua boolean installIfNotAvailable rằng ứng dụng sẽ được cài đặt nếu thiết bị có hỗ trợ và chưa được cài đặt. Nếu người dùng nhấp vào đường liên kết trên một thiết bị không hỗ trợ thiết bị di động ứng dụng, ứng dụng đó sẽ được mở từ một trang web. Bạn có thể thực hiện việc này bằng cách gọi setHandleCodeInApp(true) trong phần ActionCodeSettings.Builder . 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 web dự phòng được sử dụng tại đây (khi không có ứng dụng di động nào) sẽ là URL đã định cấu hình trong phần mẫu thao tác với email. Một phương thức thanh toán mặc định đã được cấp phép cho tất cả dự án. Tham khảo tuỳ chỉnh trình xử lý email để tìm hiểu thêm về cách tuỳ chỉnh trình xử lý thao tác qua 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 đến 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 truy vấn các tham số oobCode, mode, apiKeycontinueUrl. Chính sách quyền riêng tư sẽ là URL gốc được chỉ định trong đối tượng ActionCodeSettings. Mặc dù bạn có thể chặn và xử lý đường liên kết đến từ ứng dụng của bạn mà không cần làm gì thêm bạn nên sử dụng thư viện ứng dụng FDL để phân tích cú pháp đường liên kết sâu cho bạn. Có thể áp dụng mã hành động trực tiếp từ ứng dụng dành cho thiết bị di động tương tự về cách xử lý dữ liệu từ luồng web được mô tả trong tuỳ chỉnh trình xử lý email.

Khi xử lý các thao tác qua email như xác minh email, mã hành động trong Tham số truy vấn oobCode cần được phân tích cú pháp từ đường 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.