Android 15 ベータ版 2 以降では、androidx.credentials:1.5.0-alpha01 と組み合わせることで、デベロッパーはユーザー名やパスワード フィールドなどの特定のビューを Credential Manager リクエストにリンクできます。ユーザーがこれらのビューのいずれかにフォーカスすると、対応するリクエストが認証情報マネージャーに送信されます。結果の認証情報はプロバイダ間で集約され、キーボードのインライン候補やプルダウン候補などの自動入力 UI に表示されます。この機能は、ユーザーが誤って認証情報マネージャーのアカウント選択ツールを閉じ、関連するフィールドをタップした場合のフォールバックとして使用できます。
この機能でデベロッパーが使用するエンドポイントとしては、Jetpack androidx.credentials ライブラリが推奨されます。
図 1: パスワード、パスキー、Google でログインを使用して認証情報で自動入力した結果。
実装
認証情報マネージャーを使用して自動入力の結果に認証情報を表示するには、標準実装を使用して GetCredentialRequest
を作成し、関連するビューに設定します。次の例に示すように、レスポンスが getCredential
API 呼び出しから返されたか、PendingGetCredentialRequest
から返されたかに関係なく、レスポンス処理は同じです。
まず、GetCredentialRequest
を構築します。
// Retrieves the user's saved password for your app.
val getPasswordOption = GetPasswordOption()
// Get a passkey from the user's public key credential provider.
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
requestJson = requestJson
)
val getCredRequest = GetCredentialRequest(
listOf(getPasswordOption, getPublicKeyCredentialOption)
)
次に、getCredential
API を呼び出します。認証情報マネージャーのセレクタが表示されます。
coroutineScope {
try {
val result = credentialManager.getCredential(
context = activityContext, // Use an activity-based context.
request = getCredRequest
)
handleSignIn(result);
} catch (e: GetCredentialException) {
handleFailure(e);
}
}
最後に、自動入力機能を有効にします。ユーザーがこれらのビューを操作したときに自動入力で認証情報の結果を表示できるようにするには、getCredRequest
を関連するビュー(username, password
など)に設定します。
usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest) { response -> handleSignIn(response)
}
passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
getCredRequest) { response -> handleSignIn(response)
}