Dijital kimlik bilgileri verme

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