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