Skip to content

Commit 0c23312

Browse files
authored
Add additional credman webview snippet and autofill snippets (#561)
1 parent ef79bd2 commit 0c23312

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

identity/credentialmanager/src/main/java/com/example/identity/credentialmanager/PasskeyAndPasswordFunctions.kt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,40 @@ class PasskeyAndPasswordFunctions (
130130
}
131131
}
132132

133+
fun autofillImplementation(
134+
requestJson: String
135+
) {
136+
// [START android_identity_autofill_construct_request]
137+
// Retrieves the user's saved password for your app.
138+
val getPasswordOption = GetPasswordOption()
139+
140+
// Get a passkey from the user's public key credential provider.
141+
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
142+
requestJson = requestJson
143+
)
144+
145+
val getCredRequest = GetCredentialRequest(
146+
listOf(getPasswordOption, getPublicKeyCredentialOption)
147+
)
148+
// [END android_identity_autofill_construct_request]
149+
150+
runBlocking {
151+
// [START android_identity_autofill_get_credential_api]
152+
coroutineScope {
153+
try {
154+
val result = credentialManager.getCredential(
155+
context = activityContext, // Use an activity-based context.
156+
request = getCredRequest
157+
)
158+
handleSignIn(result);
159+
} catch (e: GetCredentialException) {
160+
handleFailure(e);
161+
}
162+
}
163+
// [END android_identity_autofill_get_credential_api]
164+
}
165+
}
166+
133167
// [START android_identity_launch_sign_in_flow_2]
134168
fun handleSignIn(result: GetCredentialResponse) {
135169
// Handle the successfully returned credential.
@@ -239,6 +273,8 @@ class PasskeyAndPasswordFunctions (
239273
}
240274
// [END android_identity_handle_create_passkey_failure]
241275

276+
fun handleFailure(e: GetCredentialException) { }
277+
242278
// [START android_identity_register_password]
243279
suspend fun registerPassword(username: String, password: String) {
244280
// Initialize a CreatePasswordRequest object.

identity/credentialmanager/src/main/java/com/example/identity/credentialmanager/WebViewMainActivity.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,25 @@ class WebViewMainActivity : ComponentActivity() {
5858
coroutineScope: CoroutineScope,
5959
credentialManagerHandler: CredentialManagerHandler
6060
) {
61+
// [START android_identity_create_webview_object]
6162
val passkeyWebListener = PasskeyWebListener(activity, coroutineScope, credentialManagerHandler)
63+
6264
val webViewClient = object : WebViewClient() {
6365
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
6466
super.onPageStarted(view, url, favicon)
6567
webView.evaluateJavascript(PasskeyWebListener.INJECTED_VAL, null)
6668
}
6769
}
6870

71+
webView.webViewClient = webViewClient
72+
// [END android_identity_create_webview_object]
73+
74+
// [START android_identity_set_web]
6975
val rules = setOf("*")
7076
if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_MESSAGE_LISTENER)) {
7177
WebViewCompat.addWebMessageListener(webView, PasskeyWebListener.INTERFACE_NAME,
7278
rules, passkeyWebListener)
7379
}
74-
75-
webView.webViewClient = webViewClient
80+
// [END android_identity_set_web]
7681
}
7782
}

0 commit comments

Comments
 (0)