Mit der Credential Manager API können Sie Anmeldedaten für Android-Inhaber-Apps (auch „Wallet“-Apps genannt) ausstellen. In diesem Leitfaden wird erklärt, wie Sie Anmeldedaten im bevorzugten Inhaber eines Nutzers speichern.
Implementierung
In diesem Abschnitt werden die Schritte beschrieben, die zum Ausstellen digitaler Anmeldedaten erforderlich sind.
Abhängigkeiten hinzufügen
Fügen Sie Ihrem Gradle-Build-Skript die folgenden Abhängigkeiten hinzu:
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") implementation("androidx.credentials:credentials-play-services-auth:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" implementation "androidx.credentials:credentials-play-services-auth:1.7.0-alpha02" }
Credential Manager initialisieren
Initialisieren Sie eine Instanz der Klasse CredentialManager.
val credentialManager = CredentialManager.create(context)
Ausstellungsanfrage erstellen
Die Anfrage zum Erstellen digitaler Anmeldedaten muss einen JSON-String enthalten, der dem OpenID4VCI Standardprotokoll folgt. Hier ein Beispiel für eine OpenID4VCI-Anfrage:
"requests": [
{
"protocol": "openid4vci-v1",
"data": {
"credential_issuer": "https://digital-credentials.dev",
"credential_configuration_ids": [
"com.emvco.payment_card"
],
"grants": {
"urn:ietf:params:oauth:grant-type:pre-authorized_code": {
"pre-authorized_code": "..."
}
}
}
}
]
Erstellen Sie eine CreateDigitalCredentialRequest, die die Ausstellungsanfrage enthält.
val issuanceRequestJson = "{ ... }" // Your issuance JSON
val createRequest = CreateDigitalCredentialRequest(
requestJson = issuanceRequestJson,
origin = null
)
Ausstellungsanfrage stellen
Stellen Sie die Anmeldedaten mit der Funktion createCredential für den Inhaber des Nutzers aus. Mit dieser Funktion wird die Credential Manager-Auswahlleiste als Ansicht am unteren Rand gestartet, über die der Nutzer die Inhaber-App auswählen kann, in der die Anmeldedaten gespeichert werden sollen.
try {
val response = credentialManager.createCredential(
context = context,
request = createRequest
)
handleSuccess(response as CreateDigitalCredentialResponse)
} catch (e: CreateCredentialException) {
handleCreateException(e)
}
Antwort verarbeiten
Nachdem Sie die Ausstellungsanfrage gestellt haben, wird eine CreateDigitalCredentialResponse zurückgegeben. Diese Antwort enthält einen responseJson-String, der das Ergebnis der Ausstellung beschreibt.
fun handleSuccess(response: CreateDigitalCredentialResponse) {
val responseJson = response.responseJson
// Parse responseJson according to your protocol (e.g. OpenID4VCI)
}
Ausnahmen verarbeiten
Wenn der Ausstellungsablauf fehlschlägt, löst createCredential eine CreateCredentialException aus, die von Ihrer App verarbeitet werden sollte:
fun handleCreateException(e: CreateCredentialException) {
when (e) {
is CreateCredentialCancellationException -> {
// The user canceled the flow
}
is CreateCredentialInterruptedException -> {
// The flow was interrupted (e.g. by another UI element)
}
is CreateCredentialNoCreateOptionException -> {
// No wallet application is available to handle the request
}
is CreateCredentialUnsupportedException -> {
// The device or the system doesn't support this request
}
is CreateCredentialProviderConfigurationException -> {
// There is a configuration issue with the wallet provider
}
is CreateCredentialCustomException -> {
// A protocol-specific error occurred
val errorType = e.type
val errorMessage = e.message
}
is CreateCredentialUnknownException -> {
// An unknown error occurred
}
else -> {
// Generic error handling
}
}
}