অটোফিলের সাথে শংসাপত্র ম্যানেজারকে একীভূত করুন

Android 15 Beta 2 দিয়ে শুরু করে, androidx.credentials:1.5.0-alpha01 এর সাথে যুক্ত, বিকাশকারীরা শংসাপত্র ম্যানেজার অনুরোধের সাথে ব্যবহারকারীর নাম বা পাসওয়ার্ড ক্ষেত্রগুলির মতো নির্দিষ্ট ভিউ লিঙ্ক করতে পারে। ব্যবহারকারী যখন এই ভিউগুলির একটিতে ফোকাস করে, তখন সংশ্লিষ্ট অনুরোধটি শংসাপত্র ব্যবস্থাপকের কাছে পাঠানো হয়। ফলস্বরূপ শংসাপত্রগুলি সরবরাহকারীদের মধ্যে একত্রিত করা হয় এবং অটোফিল UI-তে প্রদর্শিত হয়, যেমন কীবোর্ড ইনলাইন পরামর্শ বা ড্রপ-ডাউন পরামর্শ৷ এই বৈশিষ্ট্যটি একটি ফলব্যাক হিসাবে ব্যবহার করা যেতে পারে যখন ব্যবহারকারীরা ভুলবশত ক্রেডেনশিয়াল ম্যানেজার অ্যাকাউন্ট নির্বাচককে খারিজ করে দেয় এবং তারপরে প্রাসঙ্গিক ক্ষেত্রে ট্যাপ করে।

Jetpack androidx.credentials লাইব্রেরি এই বৈশিষ্ট্যটির জন্য ডেভেলপারদের জন্য পছন্দের শেষ পয়েন্ট।

অটোফিল ফলাফলে প্রমাণপত্রাদি দেখানো চিত্র
চিত্র 1: পাসওয়ার্ড, পাসকি ব্যবহার করে শংসাপত্র সহ ফলাফল অটোফিল করুন এবং Google এর সাথে সাইন ইন করুন৷

বাস্তবায়ন

অটোফিল ফলাফলে শংসাপত্রগুলি দেখানোর জন্য শংসাপত্র ম্যানেজার ব্যবহার করতে, একটি GetCredentialRequest তৈরি করতে স্ট্যান্ডার্ড বাস্তবায়ন ব্যবহার করুন এবং তারপরে এটি প্রাসঙ্গিক দৃশ্যগুলিতে সেট করুন৷ প্রতিক্রিয়া হ্যান্ডলিং একই, প্রতিক্রিয়াটি getCredential API কল বা PendingGetCredentialRequest থেকে আসে, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে।

প্রথমে, একটি GetCredentialRequest তৈরি করুন:

কোটলিন

// Retrieves the user's saved password for your app.
val getPasswordOption = GetPasswordOption()

// Get a passkey from the user's public key credential provider.
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
    requestJson = requestJson
)

val getCredRequest = GetCredentialRequest(
    listOf(getPasswordOption, getPublicKeyCredentialOption)
)

জাভা

// Retrieves the user's saved password for your app.
GetPasswordOption getPasswordOption = new GetPasswordOption();

// Get a passkey from the user's public key credential provider.
GetPublicKeyCredentialOption getPublicKeyCredentialOption =
    new GetPublicKeyCredentialOption(requestJson);

GetCredentialRequest getCredRequest = new GetCredentialRequest(
    Arrays.asList(getPasswordOption, getPublicKeyCredentialOption)
);

এরপর, getCredential API কল করুন। এটি ক্রেডেনশিয়াল ম্যানেজার নির্বাচক প্রদর্শন করে।

কোটলিন

coroutineScope.launch {
    try {
        val result = credentialManager.getCredential(
            context = activityContext, // Use an activity-based context.
            request = getCredRequest
        )
        handleSignIn(result);
    } catch (GetCredentialException e) {
        handleFailure(e);
    }
}

জাভা

coroutineScope.launch(new CoroutineScopeRunnable() {
    @Override
    public void run(@NonNull CoroutineScope scope) {
        try {
            GetCredentialResponse result = credentialManager.getCredential(
                activityContext, // Use an activity-based context.
                getCredRequest
            );
            handleSignIn(result);
        } catch (GetCredentialException e) {
            handleFailure(e);
        }
    }
});

অবশেষে, অটোফিল অভিজ্ঞতা সক্ষম করুন। ব্যবহারকারী যখন এই ভিউগুলির সাথে ইন্টারঅ্যাক্ট করে তখন স্বয়ংক্রিয়ভাবে শংসাপত্রের ফলাফলগুলি সক্ষম করতে প্রাসঙ্গিক ভিউতে (যেমন username, password ) getCredRequest সেট করুন।

কোটলিন

import androidx.credentials.PendingGetCredentialRequest

usernameEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
    getCredRequest) { response -> handleSignIn(response)
}

passwordEditText.pendingGetCredentialRequest = PendingGetCredentialRequest(
    getCredRequest) { response -> handleSignIn(response)
}

জাভা

import androidx.credentials.CredentialManagerViewHandler;
import androidx.credentials.PendingGetCredentialRequest;

CredentialManagerViewHandler.setPendingGetCredentialRequest(
               usernameEditText, new PendingGetCredentialRequest(
                       getCredRequest, result -> {
                           handleSignIn(result);
                           return null;
                       }
               )

CredentialManagerViewHandler.setPendingGetCredentialRequest(
               passwordEditText, new PendingGetCredentialRequest(
                       getCredRequest, result -> {
                           handleSignIn(result);
                           return null;
                       }
               )