Credential Manager API memungkinkan Anda mengeluarkan kredensial ke aplikasi pemegang Android (juga disebut "dompet"). Panduan ini menjelaskan cara menyimpan kredensial ke pemegang pilihan pengguna.
Penerapan
Bagian ini menjelaskan langkah-langkah yang diperlukan untuk mengeluarkan kredensial digital.
Menambahkan dependensi
Tambahkan dependensi berikut ke skrip build gradle Anda:
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" }
Menginisialisasi Credential Manager
Lakukan inisialisasi instance class CredentialManager.
val credentialManager = CredentialManager.create(context)
Membuat permintaan penerbitan
Permintaan pembuatan kredensial digital harus berisi string JSON yang mengikuti protokol standar OpenID4VCI. Berikut adalah contoh tampilan permintaan OpenID4VCI:
"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": "..."
}
}
}
}
]
Buat CreateDigitalCredentialRequest yang berisi permintaan penerbitan.
val issuanceRequestJson = "{ ... }" // Your issuance JSON
val createRequest = CreateDigitalCredentialRequest(
requestJson = issuanceRequestJson,
origin = null
)
Membuat permintaan penerbitan
Keluarkan kredensial ke pemegang pengguna menggunakan fungsi createCredential. Fungsi ini meluncurkan pemilih panel bawah Credential Manager yang memungkinkan pengguna memilih aplikasi pemegang tempat mereka ingin menyimpan kredensial.
try {
val response = credentialManager.createCredential(
context = context,
request = createRequest
)
handleSuccess(response as CreateDigitalCredentialResponse)
} catch (e: CreateCredentialException) {
handleCreateException(e)
}
Menangani respons
Setelah Anda membuat permintaan penerbitan, CreateDigitalCredentialResponse akan ditampilkan. Respons ini berisi string responseJson, yang menjelaskan hasil penerbitan.
fun handleSuccess(response: CreateDigitalCredentialResponse) {
val responseJson = response.responseJson
// Parse responseJson according to your protocol (e.g. OpenID4VCI)
}
Menangani pengecualian
Jika alur penerbitan gagal, createCredential akan menampilkan CreateCredentialException, yang harus ditangani oleh aplikasi Anda:
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
}
}
}