Credential


abstract class Credential

Known direct subclasses
CustomCredential

Base class for a custom credential with which the user consented to authenticate to the app.

DigitalCredential

Represents the user's digital credential, generally used for verification or sign-in purposes.

PasswordCredential

Represents the user's password credential granted by the user for app sign-in.

PublicKeyCredential

Represents the user's passkey credential granted by the user for app sign-in.

RestoreCredential

Represents the user's restore credential for the app sign in.


Base class for a credential with which the user consented to authenticate to the app.

import androidx.credentials.Credential
import androidx.credentials.CustomCredential
import androidx.credentials.PasswordCredential
import androidx.credentials.PublicKeyCredential

when (credential) {
    is PublicKeyCredential -> {
        val responseJson = credential.authenticationResponseJson
        val userCredential = fidoAuthenticateWithServer(responseJson)
        loginWithPasskey(userCredential)
    }
    is PasswordCredential -> {
        val userName = credential.id
        val password = credential.password
        loginWithPassword(userName, password)
    }
    is CustomCredential -> {
        // If you are also using any external sign-in libraries, parse them here with the
        // utility functions provided they provided.
        if (credential.type == ExampleCustomCredential.TYPE) {
            try {
                val exampleCustomCredential =
                    ExampleCustomCredential.createFrom(credential.data)
                loginWithExampleCustomCredential(exampleCustomCredential)
            } catch (e: ExampleCustomCredential.ExampleCustomCredentialParsingException) {
                // Unlikely to happen. If it does, you likely need to update the dependency
                // version of your external sign-in library.
                Log.e(TAG, "Failed to parse an ExampleCustomCredential", e)
            }
        } else {
            Log.w(
                TAG,
                "Received unrecognized credential type ${credential.type}. " +
                    "This shouldn't happen"
            )
        }
    }
    else -> {
        Log.w(
            TAG,
            "Received unrecognized credential type ${credential.type}. This shouldn't happen"
        )
    }
}

Summary

Public companion functions

Credential
@RequiresApi(value = 34)
createFrom(credential: Credential)

Parses the credential into an instance of Credential.

Credential
createFrom(type: String, data: Bundle)

Parses the raw data into an instance of Credential.

Public properties

Bundle

the credential data in the Bundle format

String

the credential type determined by the credential-type-specific subclass (e.g. PasswordCredential.TYPE_PASSWORD_CREDENTIAL for PasswordCredential or PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL for PublicKeyCredential)

Public companion functions

createFrom

Added in 1.5.0-beta01
@RequiresApi(value = 34)
fun createFrom(credential: Credential): Credential

Parses the credential into an instance of Credential.

It is recommended to construct a Credential by directly instantiating a Credential subclass, instead of using this API. This API should only be used by a small subset of system apps that reconstruct an existing object for user interactions such as collecting consents.

Parameters
credential: Credential

the framework Credential object

createFrom

Added in 1.5.0-beta01
fun createFrom(type: String, data: Bundle): Credential

Parses the raw data into an instance of Credential.

It is recommended to construct a Credential by directly instantiating a Credential subclass, instead of using this API. This API should only be used by a small subset of system apps that reconstruct an existing object for user interactions such as collecting consents.

Parameters
type: String

matches Credential.type, the credential type

data: Bundle

matches Credential.data, the credential data in the Bundle format; this should be constructed and retrieved from the a given Credential itself and never be created from scratch

Public properties

data

Added in 1.2.0
val dataBundle

the credential data in the Bundle format

type

Added in 1.2.0
val typeString

the credential type determined by the credential-type-specific subclass (e.g. PasswordCredential.TYPE_PASSWORD_CREDENTIAL for PasswordCredential or PublicKeyCredential.TYPE_PUBLIC_KEY_CREDENTIAL for PublicKeyCredential)