Android 15 ベータ版 2 以降では、androidx.credentials:1.5.0-alpha01 と組み合わせて、ユーザー名やパスワード フィールドなどの特定のビューを認証情報マネージャーのリクエストにリンクできます。ユーザーがこれらのビューのいずれかにフォーカスすると、対応するリクエストが認証情報マネージャーに送信されます。結果の認証情報はプロバイダ間で集約され、キーボードのインライン候補やプルダウン候補などの自動入力 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)
}