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