ক্রেডেনশিয়াল ম্যানেজার - হোল্ডার এপিআই অ্যান্ড্রয়েড অ্যাপগুলিকে যাচাইকারীদের কাছে ডিজিটাল ক্রেডেনশিয়াল পরিচালনা এবং উপস্থাপন করতে সক্ষম করে।
শুরু করুন
ক্রেডেনশিয়াল ম্যানেজার - হোল্ডার এপিআই ব্যবহার করতে, আপনার অ্যাপ মডিউলের বিল্ড স্ক্রিপ্টে নিম্নলিখিত নির্ভরতা যোগ করুন:
// 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-alpha02"
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
 এই মেটাডেটার ফর্ম্যাটটি একটি RegisterCredentialsRequest তে পাস করা হয়েছে। একটি [RegistryManager][1] তৈরি করুন এবং শংসাপত্রগুলি নিবন্ধন করুন:
এই উদাহরণে, মেটাডেটাটি ক্রেডেনশিয়াল এন্ট্রির একটি ডাটাবেস থেকে সংকলিত। আপনি আমাদের নমুনা ওয়ালেটে একটি রেফারেন্স খুঁজে পেতে পারেন যা অ্যাপ লোডের সময় মেটাডেটা নিবন্ধন করে। ভবিষ্যতে, ক্রেডেনশিয়াল ডাটাবেস রচনা Jetpack API দ্বারা সমর্থিত হবে। সেই সময়ে, আপনি ক্রেডেনশিয়াল মেটাডেটা সু-সংজ্ঞায়িত ডেটা স্ট্রাকচার হিসাবে নিবন্ধন করতে পারেন।
ডিভাইস রিবুট করার সময়ও রেজিস্ট্রিটি টিকে থাকে। একই আইডি + টাইপের একই রেজিস্ট্রি পুনরায় নিবন্ধন করলে পূর্ববর্তী রেজিস্ট্রি রেকর্ডটি ওভাররাইট হয়ে যায়। অতএব, আপনার শংসাপত্রের ডেটা পরিবর্তিত হলেই কেবল পুনরায় নিবন্ধন করুন।
ঐচ্ছিক: একটি ম্যাচার তৈরি করুন
ক্রেডেনশিয়াল ম্যানেজার প্রোটোকল-অজ্ঞেয়বাদী; এটি মেটাডেটা রেজিস্ট্রিকে একটি অস্বচ্ছ ব্লব হিসেবে বিবেচনা করে এবং এর বিষয়বস্তু যাচাই বা পরীক্ষা করে না। অতএব, ওয়ালেটকে একটি ম্যাচার প্রদান করতে হবে, একটি রানেবল বাইনারি যা ওয়ালেটের নিজস্ব ডেটা প্রক্রিয়া করতে পারে এবং আগত অনুরোধের উপর ভিত্তি করে ডিসপ্লে মেটাডেটা তৈরি করতে পারে। ক্রেডেনশিয়াল ম্যানেজার নেটওয়ার্ক বা ডিস্ক অ্যাক্সেস ছাড়াই একটি স্যান্ডবক্স পরিবেশে ম্যাচার চালায় যাতে ব্যবহারকারীর কাছে UI রেন্ডার করার আগে কোনও কিছুই ওয়ালেটে লিক না হয়।
ক্রেডেনশিয়াল ম্যানেজার API আজ থেকে জনপ্রিয় প্রোটোকলের জন্য ম্যাচার সরবরাহ করবে, OpenID4VP। এটি এখনও আনুষ্ঠানিকভাবে প্রকাশিত হয়নি, তাই আপাতত OpenID4VP প্রোটোকলের জন্য আমাদের নমুনা ম্যাচার ব্যবহার করুন।
একটি নির্বাচিত শংসাপত্র পরিচালনা করুন
 এরপর, ব্যবহারকারী যখন কোনও ক্রেডেনশিয়াল নির্বাচন করেন তখন ওয়ালেটটি পরিচালনা করতে হবে। আপনি এমন একটি অ্যাক্টিভিটি সংজ্ঞায়িত করতে পারেন যা 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()
প্রসঙ্গে ক্রেডেনশিয়াল প্রতিক্রিয়া কীভাবে ফেরত দিতে হয় তার উদাহরণের জন্য নমুনা অ্যাপটি দেখুন।
