Dijital kimlik bilgileri verme

Credential Manager API, Android cüzdan uygulamalarına kimlik bilgileri vermenize olanak tanır. Bu kılavuzda, kullanıcının tercih ettiği cüzdana nasıl kimlik bilgisi verileceği açıklanmaktadır.

Uygulama

Bu bölümde, dijital kimlik bilgileri vermek için gereken adımlar ayrıntılı olarak açıklanmaktadır.

Bağımlılık ekleme

Gradle derleme komut dosyanıza aşağıdaki bağımlılıkları ekleyin:

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"
}

Kimlik Bilgisi Yöneticisi'ni başlatma

CredentialManager sınıfının bir örneğini başlatın.

val credentialManager = CredentialManager.create(context)

Düzenleme isteği oluşturma

Dijital kimlik bilgisi oluşturma isteği, OpenID4VCI standart protokolüne uygun bir JSON dizesi içermelidir. OpenID4VCI isteğinin nasıl göründüğüne dair bir örneği aşağıda bulabilirsiniz:

"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": "..."
        }
      }
    }
  }
]

Yayınlama isteğini içeren bir CreateDigitalCredentialRequest oluşturun.

val issuanceRequestJson = "{ ... }" // Your issuance JSON
val createRequest = CreateDigitalCredentialRequest(
    requestJson = issuanceRequestJson,
    origin = null
)

Sertifika oluşturma isteğinde bulunma

createCredential işlevini kullanarak kimlik bilgisini kullanıcının cüzdanına verin. Bu işlev, kullanıcının kimlik bilgisinin depolanmasını istediği cüzdan uygulamasını seçmesine olanak tanıyan Kimlik Bilgisi Yöneticisi alt sayfa seçicisini başlatır.

try {
    val response = credentialManager.createCredential(
        context = context,
        request = createRequest
    )
    handleSuccess(response as CreateDigitalCredentialResponse)
} catch (e: CreateCredentialException) {
    handleCreateException(e)
}

Yanıtı işleme

Sertifika verme isteğinde bulunduktan sonra bir CreateDigitalCredentialResponse döndürülür. Bu yanıt, düzenleme işleminin sonucunu açıklayan bir responseJson dizesi içerir.

fun handleSuccess(response: CreateDigitalCredentialResponse) {
    val responseJson = response.responseJson
    // Parse responseJson according to your protocol (e.g. OpenID4VCI)
}

İstisnaları işleme

Kart verme akışı başarısız olursa createCredential, uygulamanızın işlemesi gereken bir CreateCredentialException hatası verir:

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
        }
    }
}