Kimlik Bilgisi Yöneticisi API'si, Android sahibi (aynı zamanda "cüzdan" olarak da adlandırılır) uygulamalarına kimlik bilgisi vermenize olanak tanır. Bu kılavuzda, kimlik bilgilerinin kullanıcının tercih ettiği kart sahibine nasıl kaydedileceği açıklanmaktadır.
Uygulama
Bu bölümde, dijital kimlik bilgilerinin verilmesi 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)
Veriliş isteği oluşturma
Dijital kimlik bilgisi oluşturma isteği, OpenID4VCI standart protokolüne uygun bir JSON dizesi içermelidir. Aşağıda, OpenID4VCI isteğinin nasıl göründüğüne dair bir örnek verilmiştir:
"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": "..."
}
}
}
}
]
Düzenleme isteğini içeren bir CreateDigitalCredentialRequest oluşturun.
val issuanceRequestJson = "{ ... }" // Your issuance JSON
val createRequest = CreateDigitalCredentialRequest(
requestJson = issuanceRequestJson,
origin = null
)
Düzenleme isteğinde bulunma
createCredential işlevini kullanarak kimlik bilgisini kullanıcının cihazına verin. Bu işlev, kullanıcının kimlik bilgisinin saklanmasını istediği tutucu 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
Kart verme isteğinde bulunduktan sonra CreateDigitalCredentialResponse döndürülür. Bu yanıtta, yayınlama sonucunu açıklayan bir responseJson dizesi bulunur.
fun handleSuccess(response: CreateDigitalCredentialResponse) {
val responseJson = response.responseJson
// Parse responseJson according to your protocol (e.g. OpenID4VCI)
}
İstisnaları işleme
Verme akışı başarısız olursa createCredential, uygulamanızın işlemesi gereken bir CreateCredentialException oluşturur:
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
}
}
}