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 đăng nhập của Credential Manager cho phép người dùng khôi phục tài khoản ứng dụng khi thiết lập một 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à các lợi ích của tính năng Khôi phục thông tin đăng nhập:

  • Trải nghiệm người dùng liền mạch: Người dùng có thể khôi phục tài khoản ứng dụng mà không cần đăng nhập 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 khi thiết lập một 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, những nhà phát triển đã hỗ trợ khoá truy cập có thể thêm các chức 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 Restore Credentials (Khôi phục thông tin đăng nhập) để tạo, nhận và xoá thông tin đăng nhập có liên quan.

  1. Tạo Restore Credential: Khi người dùng đăng nhập vào ứng dụng của bạn, hãy tạo một Restore Credential được liên kết với tài khoản của họ. Thông tin đăng nhập 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ó sẵn 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 một 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 tự động đăng nhập người dùng mà không cần họ nhập thêm thông tin.
  3. Xoá thông tin đăng nhập 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 đăng nhập 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 mượt mà 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 xuất phát từ việc cả khoá truy cập và khoá khôi phục (loại thông tin đăng nhập mà tính năng Khôi phục thông tin đăng nhập sử dụng) đều tuân thủ cùng một quy cách 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 đăng nhập có thể truy xuất và khôi phục hiệu quả thông tin đăng nhập 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ả quy trình khôi phục dữ liệu ứng dụng sang 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à tự động đăng nhập người dùng

Triển khai

Bạn có thể sử dụng Restore Credentials API thông qua thư viện Jetpack 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 Credential Manager vào dự án của bạ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 = fetchAuthenticationJson()
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(listOf(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 một 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 đăng nhập của ứng dụng được khôi phục ngay sau khi dữ liệu ứng dụng được khôi phục.