Khôi phục thông tin xác thực ứng dụng khi thiết lập thiết bị mới

Tính năng Khôi phục thông tin xác thực của Trình quản lý thông tin xác thực cho phép người dùng khôi phục tài khoản ứng dụng của họ khi thiết lập thiết bị mới. API này đang ở giai đoạn xem trước dành cho nhà phát triển và có trên tất cả các thiết bị chạy Android 9 trở lên và Dịch vụ Google Play (GMS) Core phiên bản 242200000 trở lên. Sau đây là một số lợi ích của tính năng Khôi phục thông tin xác thực:

  • Trải nghiệm liền mạch cho người dùng: Người dùng có thể khôi phục tài khoản ứng dụng của họ mà không cần đăng nhập theo cách thủ công vào từng ứng dụng.
  • Tăng mức độ tương tác của người dùng: Người dùng có nhiều khả năng tiếp tục sử dụng ứng dụng của bạn hơn nếu họ có thể khôi phục tài khoản của mình khi thiết lập thiết bị mới.
  • Giảm nỗ lực phát triển: tính năng Khôi phục thông tin xác thực được tích hợp với Trình quản lý thông tin xác thực, vì vậy, các nhà phát triển đã hỗ trợ khoá truy cập có thể thêm các tính năng khôi phục thông tin xác thực.

Cách hoạt động

Bạn có thể sử dụng tính năng Khôi phục thông tin xác thực để tạo, nhận và xoá thông tin xác thực liên quan.

  1. Tạo thông tin xác thực khôi phục: Khi người dùng đăng nhập vào ứng dụng của bạn, hãy tạo Thông tin xác thực khôi phục liên kết với tài khoản của họ. Thông tin xác thực này được lưu trữ cục bộ và đồng bộ hoá với đám mây nếu người dùng đã bật tính năng Sao lưu của Google và có thể sử dụng tính năng mã hoá hai đầu (các ứng dụng có thể chọn không đồng bộ hoá với đám mây)
  2. Nhận thông tin xác thực khôi phục: Khi người dùng thiết lập thiết bị mới, ứng dụng của bạn có thể yêu cầu thông tin xác thực khôi phục từ Trình quản lý thông tin xác thực. Điều này cho phép bạn đăng nhập tự động cho người dùng mà không cần nhập thêm thông tin.
  3. Xoá thông tin xác thực khôi phục: Khi người dùng đăng xuất khỏi ứng dụng, bạn nên xoá thông tin xác thực khôi phục được liên kết.

Tính năng Khôi phục thông tin xác thực có thể tích hợp liền mạch với các hệ thống phụ trợ đã triển khai khoá truy cập. Khả năng tương thích này bắt nguồn từ thực tế là cả khoá truy cập và khoá khôi phục (loại thông tin xác thực mà tính năng Khôi phục thông tin xác thực sử dụng) đều tuân thủ cùng một thông số kỹ thuật cơ bản. Việc điều chỉnh này đảm bảo rằng quy trình Khôi phục thông tin xác thực có thể truy xuất và khôi phục hiệu quả thông tin xác thực của người dùng được lưu trữ trong các hệ thống hỗ trợ khoá truy cập, mang lại trải nghiệm nhất quán và thân thiện với người dùng trên nhiều nền tảng và phương thức xác thực.

Bảng dưới cùng của Trình quản lý thông tin xác thực
Hình 1. Sơ đồ mô tả việc khôi phục dữ liệu ứng dụng vào một thiết bị mới bằng thông tin đăng nhập khôi phục, bao gồm cả việc tạo thông tin đăng nhập, bắt đầu quy trình khôi phục và đăng nhập tự động cho người dùng

Triển khai

Bạn có thể sử dụng API Khôi phục thông tin xác thực thông qua thư viện Jetpack của Trình quản lý thông tin xác thực. Để bắt đầu, hãy làm theo các bước sau:

  1. Thêm phần phụ thuộc Trình quản lý thông tin xác thực vào dự án.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. Tạo đối tượng CreateRestoreCredentialRequest.

  3. Gọi phương thức createCredential() trên đối tượng CredentialManager.

    val credentialManager = CredentialManager.create(context)
    
    // On a successful authentication create a Restore Key
    // Pass in the context and CreateRestoreCredentialRequest object
    val response = credentialManager.createCredential(context, createRestoreRequest)
    

    Thông tin xác thực khôi phục được tạo này là một loại thông tin xác thực webauthn và được gọi là khoá khôi phục.

  4. Khi người dùng thiết lập một thiết bị mới, hãy gọi phương thức getCredential() trên đối tượng CredentialManager.

    // Fetch the Authentication JSON from server
    val authenticationJson = ...
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(Immutablelist.of(options))
    
    // The restore key can be fetched in two scenarios to
    // 1. On the first launch of app on the device, fetch the Restore Key
    // 2. In the onRestore callback (if the app implements the Backup Agent)
    val response = credentialManager.getCredential(context, getRequest)
    
  5. Khi người dùng đăng xuất khỏi ứng dụng, hãy gọi phương thức clearCredentialState() trên đối tượng CredentialManager.

    // Create a ClearCredentialStateRequest object
    val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL)
    
    // On user log-out, clear the restore key
    val response = credentialManager.clearCredentialState(clearRequest)
    

Nếu bạn đang sử dụng tác nhân sao lưu, hãy thực hiện phần getCredential trong lệnh gọi lại onRestore. Điều này đảm bảo rằng thông tin xác thực của ứng dụng được khôi phục ngay sau khi khôi phục dữ liệu ứng dụng.