শংসাপত্র হোল্ডার API

ক্রেডেনশিয়াল হোল্ডার API অ্যান্ড্রয়েড অ্যাপগুলিকে যাচাইকারীদের ডিজিটাল শংসাপত্রগুলি পরিচালনা করতে এবং উপস্থাপন করতে সক্ষম করে৷

শুরু করুন

ক্রেডেনশিয়াল হোল্ডার API ব্যবহার করতে, আপনার অ্যাপ মডিউলের বিল্ড স্ক্রিপ্টে নিম্নলিখিত নির্ভরতা যোগ করুন:

// In your app module's build.gradle:
dependencies {
    implementation(libs.androidx.registry.provider)
    implementation(libs.androidx.registry.provider.play.services)
}

// In libs.versions.toml:
registryDigitalCredentials = "1.0.0-alpha01"

androidx-registry-provider = { module = "androidx.credentials.registry:registry-provider", version.ref = "registryDigitalCredentials" }
androidx-registry-provider-play-services = { module = "androidx.credentials.registry:registry-provider-play-services", version.ref = "registryDigitalCredentials" }

শংসাপত্র ম্যানেজারের সাথে শংসাপত্র নিবন্ধন করুন

একটি মানিব্যাগকে শংসাপত্রের মেটাডেটা নিবন্ধন করতে হবে যাতে ক্রেডেনশিয়াল ম্যানেজার তাদের ফিল্টার করতে পারে এবং যখন একটি অনুরোধ আসে তখন শংসাপত্র নির্বাচকে সেগুলি প্রদর্শন করতে পারে৷

শংসাপত্র ম্যানেজারে ডিজিটাল শংসাপত্রের UI দেখানো চিত্র
চিত্র 1. ডিজিটাল শংসাপত্র UI।

ক্রেডেনশিয়াল ম্যানেজার নির্বাচক UI

এই মেটাডেটার বিন্যাসটি একটি RegisterCredentialsRequest এ পাস করা হয়েছে। একটি [RegistryManager][1] তৈরি করুন এবং শংসাপত্রগুলি নিবন্ধন করুন:

এই উদাহরণে, মেটাডেটা শংসাপত্রের এন্ট্রিগুলির একটি ডাটাবেস থেকে সংকলিত হয়। আপনি আমাদের নমুনা ওয়ালেটে একটি রেফারেন্স খুঁজে পেতে পারেন যা অ্যাপ লোডে মেটাডেটা নিবন্ধন করে। ভবিষ্যতে, শংসাপত্রের ডাটাবেস রচনা Jetpack API দ্বারা সমর্থিত হবে। সেই মুহুর্তে, আপনি শংসাপত্রের মেটাডেটা ভাল-সংজ্ঞায়িত ডেটা স্ট্রাকচার হিসাবে নিবন্ধন করতে পারেন।

ডিভাইস রিবুট জুড়ে রেজিস্ট্রি টিকে থাকে। একই আইডি + টাইপের একই রেজিস্ট্রি পুনরায় নিবন্ধন করা পূর্ববর্তী রেজিস্ট্রি রেকর্ডটি ওভাররাইট করবে। অতএব, আপনার শংসাপত্রের ডেটা পরিবর্তিত হলেই আপনাকে পুনরায় নিবন্ধন করতে হবে।

ঐচ্ছিক: একটি ম্যাচার তৈরি করুন

ক্রেডেনশিয়াল ম্যানেজার প্রোটোকল অ্যাগোনিস্টিক; এটি মেটাডেটা রেজিস্ট্রিটিকে একটি অস্বচ্ছ ব্লব হিসাবে বিবেচনা করে এবং এর বিষয়বস্তু যাচাই বা পরীক্ষা করে না। অতএব, ওয়ালেটকে একটি ম্যাচার প্রদান করতে হবে, একটি চলমান বাইনারি যা ওয়ালেটের নিজস্ব ডেটা প্রক্রিয়া করতে পারে এবং একটি আগত অনুরোধের ভিত্তিতে প্রদর্শন মেটাডেটা তৈরি করতে পারে। ক্রেডেনশিয়াল ম্যানেজার নেটওয়ার্ক বা ডিস্ক অ্যাক্সেস ছাড়াই স্যান্ডবক্স পরিবেশে ম্যাচার চালাবে, যাতে ব্যবহারকারীর কাছে UI রেন্ডার করার আগে কোনও ওয়ালেটে কিছু ফাঁস না হয়।

ক্রেডেনশিয়াল ম্যানেজার API জনপ্রিয় প্রোটোকলের জন্য ম্যাচার্স প্রদান করবে, আজ OpenID4VP। এটি এখনও আনুষ্ঠানিকভাবে প্রকাশ করা হয়নি, তাই আপাতত OpenID4VP v24 প্রোটোকলের জন্য আমাদের নমুনা ম্যাচার ব্যবহার করুন।

একটি নির্বাচিত শংসাপত্র পরিচালনা করুন

পরবর্তী, ব্যবহারকারীর দ্বারা একটি শংসাপত্র নির্বাচন করা হলে ওয়ালেটটি পরিচালনা করতে হবে। আপনি একটি কার্যকলাপ সংজ্ঞায়িত করতে পারেন যা androidx.credentials.registry.provider.action.GET_CREDENTIAL অভিপ্রায় ফিল্টার শোনে। আমাদের নমুনা ওয়ালেট এই পদ্ধতিটি প্রদর্শন করে

যে অভিপ্রায়টি ক্রিয়াকলাপটি চালু করবে তাতে যাচাইকারী অনুরোধ এবং কলিং মূল থাকবে, যা PendingIntentHandler.retrieveProviderGetCredentialRequest ফাংশন দিয়ে বের করা যেতে পারে। API প্রদত্ত যাচাইকারী অনুরোধের সাথে সম্পর্কিত সমস্ত তথ্য ধারণকারী একটি ProviderGetCredentialRequest ফেরত দেয়। তিনটি মূল উপাদান আছে:

  • যে অ্যাপটি অনুরোধ করেছে। আপনি getCallingAppInfo মাধ্যমে এটি পুনরুদ্ধার করতে পারেন।
  • নির্বাচিত শংসাপত্র। আপনি selectedEntryId এক্সটেনশন পদ্ধতির মাধ্যমে ব্যবহারকারী কোন প্রার্থীকে বেছে নিয়েছেন সে সম্পর্কে তথ্য পেতে পারেন; এটি আপনার নিবন্ধিত শংসাপত্রের আইডির সাথে মিলবে।
  • যাচাইকারী যে কোনো নির্দিষ্ট অনুরোধ করেছে। আপনি getCredentialOptions পদ্ধতি থেকে এটি পেতে পারেন। এই ক্ষেত্রে, আপনি ডিজিটাল শংসাপত্রের অনুরোধ সহ এই তালিকায় একটি GetDigitalCredentialOption খুঁজে পাওয়ার আশা করা উচিত।

সাধারণত, যাচাইকারী একটি ডিজিটাল শংসাপত্র উপস্থাপনা অনুরোধ করবে যাতে আপনি নিম্নলিখিত নমুনা কোডের সাথে এটি প্রক্রিয়া করতে পারেন:

request.credentialOptions.forEach { option ->
    if (option is GetDigitalCredentialOption) {
        Log.i(TAG, "Got DC request: ${option.requestJson}")
        processRequest(option.requestJson)
    }
}

আপনি আমাদের নমুনা ওয়ালেটে এর একটি উদাহরণ দেখতে পারেন।

ওয়ালেট UI রেন্ডার করুন

শংসাপত্র নির্বাচন করা হলে, ওয়ালেটটি আহ্বান করা হয় এবং ব্যবহারকারীকে তার UI এর মাধ্যমে নেওয়া হয়। নমুনায়, এটি একটি বায়োমেট্রিক প্রম্পট

শংসাপত্রের প্রতিক্রিয়া ফেরত দিন

মানিব্যাগটি ফলাফল ফেরত পাঠানোর জন্য প্রস্তুত হয়ে গেলে, আপনি শংসাপত্রের প্রতিক্রিয়া সহ কার্যকলাপটি শেষ করে তা করতে পারেন:

PendingIntentHandler.setGetCredentialResponse(
    resultData,
    GetCredentialResponse(DigitalCredential(response.responseJson))
)
setResult(RESULT_OK, resultData)
finish()

যদি একটি ব্যতিক্রম থাকে, আপনি একইভাবে শংসাপত্রের ব্যতিক্রম পাঠাতে পারেন:

PendingIntentHandler.setGetCredentialException(
    resultData,
    GetCredentialUnknownException() // Configure the proper exception
)
setResult(RESULT_OK, resultData)
finish()

প্রেক্ষাপটে শংসাপত্রের প্রতিক্রিয়া কীভাবে ফেরত দেওয়া যায় তার উদাহরণের জন্য নমুনা অ্যাপটি পড়ুন।