認証情報を復元する

認証情報マネージャーの認証情報の復元機能を使用すると、ユーザーは自分の認証情報を復元して、 設定してください。この API はデベロッパー プレビュー版であり、Android 9 以降を搭載し、Google Play 開発者サービス(GMS)Core バージョン 242200000 以降を搭載しているすべてのデバイスで利用できます。認証情報の復元機能のメリットは次のとおりです。

  • シームレスなユーザー エクスペリエンス: ユーザーは自分でアプリ アカウントを復元でき、 個々のアプリに手動でログインする必要がなくなります。
  • ユーザー エンゲージメントの向上: 新しいデバイスのセットアップ時にアカウントを復元できると、ユーザーはアプリの使用を継続する可能性が高くなります。
  • 開発作業の削減: 認証情報の復元機能が統合 できます。そのため、すでにパスキーをサポートしているデベロッパーは、 認証情報復元機能を提供します。

仕組み

Restore Credentials を使用すると、関連する認証情報を作成、取得、クリアできます。 認証情報を取得できます。

  1. 復元認証情報を作成する: ユーザーがアプリにログインしたら、復元認証情報を作成します。 アカウントに関連付けられている復元認証情報。この認証情報は Google Cloud の クラウドに同期されます。ユーザーが Google バックアップを有効にしてから エンドツーエンドの暗号化を利用できます(アプリはクラウドとの同期をオプトアウトできます)
  2. 復元認証情報を取得する: ユーザーが新しいデバイスをセットアップすると、 認証情報マネージャーから認証情報の復元をリクエストできます。これにより、追加の入力を必要とせずにユーザーを自動的にログインできます。
  3. 復元認証情報を消去する: ユーザーがアプリからログアウトしたら、関連付けられた復元認証情報を削除する必要があります。

認証情報の復元機能はバックエンド システムとスムーズに統合できる 実装していますこの互換性は、パスキーと復元キー([認証情報の復元] 機能で使用される認証情報の種類)の両方が、基盤となる技術仕様に準拠しているという事実に起因しています。このアライメントにより、認証情報の復元プロセスが パスキー対応に保存されたユーザー認証情報を効果的に取得し、復元する さまざまな環境にわたって一貫性のあるユーザー フレンドリーなエクスペリエンスが実現されます。 認証方法が必要です。

認証情報マネージャーのボトムシート
図 1. 認証情報の作成、復元フローの開始、ユーザーの自動ログインなど、復元認証情報を使用して新しいデバイスにアプリデータを復元する様子を示す図

実装

Restore Credentials API を Credential Manager Jetpack で利用できる ライブラリです。使用を開始するには、以下のステップを実行してください。

  1. プロジェクトに認証情報マネージャーの依存関係を追加します。

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. CreateRestoreCredentialRequest オブジェクトを作成する。

  3. CredentialManager オブジェクトで createCredential() メソッドを呼び出します。

    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)
    

    この生成された復元認証情報はパスキーの一種で、復元パスキーまたは復元キーとも呼ばれます。

  4. ユーザーが新しいデバイスをセットアップしたら、getCredential() 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. ユーザーがアプリからログアウトしたら、CredentialManager オブジェクトの clearCredentialState() メソッドを呼び出します。

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

バックアップ エージェントを使用している場合は、次の getCredential の部分を実行します。 onRestore コールバック。これにより、アプリデータの復元後すぐにアプリの認証情報が復元されます。