Digitale Anmeldedaten ausstellen

Mit der Credential Manager API können Sie Ausweise für Android-Inhaber-Apps (auch „Wallet“ genannt) ausstellen. In diesem Leitfaden wird erläutert, wie Sie Anmeldedaten für den bevorzugten Inhaber eines Nutzers ausstellen.

Implementierung

In diesem Abschnitt werden die Schritte zum Ausstellen digitaler Berechtigungsnachweise beschrieben.

Abhängigkeiten hinzufügen

Fügen Sie Ihrem Gradle-Build-Script 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 eines digitalen Ausweises sollte einen JSON-String enthalten, der dem Standardprotokoll OpenID4VCI entspricht. 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 dem Inhaber des Nutzers den Berechtigungsnachweis mit der Funktion createCredential aus. Diese Funktion startet die Ansicht am unteren Rand des Credential Managers, mit der der Nutzer die Holder-App auswählen kann, in der der Berechtigungsnachweis gespeichert werden soll.

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 ein 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 behandeln

Wenn der Ausstellungsablauf fehlschlägt, löst createCredential eine CreateCredentialException aus, die von deiner 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
        }
    }
}