ক্রেডেনশিয়াল প্রদানকারীর সাথে আপনার ক্রেডেনশিয়াল সামঞ্জস্যপূর্ণ রাখুন

কোনও ব্যবহারকারী পাসকী তৈরি করলে, রিলাইং পার্টি সার্ভার নির্দিষ্ট কিছু বিবরণ সেভ করে, অন্যদিকে Google Password Manager-এর মতো ক্রেডেনশিয়াল প্রদানকারী অন্যান্য বিবরণ সেভ করে। বিশেষত:

  • রিলাইং পার্টি সার্ভার সর্বজনীন কী ক্রেডেনশিয়াল সেভ করে।
  • ক্রেডেনশিয়াল প্রোভাইডার ইউজারনেম, যে নাম দেখানো হবে, ব্যক্তিগত কী এবং অন্যান্য সংশ্লিষ্ট মেটাডেটা সেভ করে। এই মেটাডেটা ব্যবহারকারীদের সাইন-ইন করার সময় প্রয়োজনীয় পাসকী শনাক্ত করতে ও বেছে নিতে সাহায্য করে।

রিলাইং পার্টি সার্ভার ও ক্রেডেনশিয়াল প্রোভাইডারের মধ্যে সেভ করা ডেটার মধ্যে সম্ভাব্য অসঙ্গতি থাকলে, ব্যবহারকারীর অভিজ্ঞতা খারাপ হতে পারে। নিম্নলিখিত পরিস্থিতিতে সমস্যা দেখা দিতে পারে:

  • রিলাইং পার্টি সার্ভারে ক্রেডেনশিয়াল মুছে দেওয়া হয়েছে কিন্তু ক্রেডেনশিয়াল প্রোভাইডারে মুছে দেওয়া হয়নি, যার ফলে ক্রেডেনশিয়াল প্রোভাইডার ব্যবহারকারীকে মুছে দেওয়া ক্রেডেনশিয়াল দেখায়।
  • রিলাইং পার্টি সার্ভারে ইউজারনেম বা ডিসপ্লে নাম আপডেট করা হয়েছে কিন্তু ক্রেডেনশিয়াল প্রোভাইডারে করা হয়নি, যার ফলে ক্রেডেনশিয়াল প্রোভাইডার পুরনো বিবরণ দেখাচ্ছে।

ক্রেডেনশিয়াল ম্যানেজারের Signal API ক্রেডেনশিয়াল মুছে ফেলতে এবং ব্যবহারকারীর মেটাডেটা, যেমন ইউজারনেম এবং ডিসপ্লে নাম আপডেট করতে, ক্রেডেনশিয়াল প্রদানকারীর সাথে রিলাইং পার্টিকে যোগাযোগ করতে দেয়। বিভিন্ন পরিস্থিতির জন্য তিন ধরনের অনুরোধের ধরন সমর্থিত:

  • SignalUnknownCredentialRequest

    • এটি দেখায় যে নির্দিষ্ট ক্রেডেনশিয়াল আর বৈধ নয় এবং ক্রেডেনশিয়াল প্রোভাইডার থেকে লুকিয়ে রাখতে বা সরিয়ে দিতে হবে।
  • SignalAllAcceptedCredentialIdsRequest

    • ক্রেডেনশিয়াল প্রদানকারীকে অনুমোদিত ক্রেডেনশিয়াল আইডির তালিকা প্রদান করে।
  • SignalCurrentUserDetailsRequest

    • ব্যবহারকারীর মেটাডেটার বিবরণ আপডেট করে।

ভার্সন মানানসই কিনা

Android 15 বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসে Signal API উপলভ্য এবং এটি androidx.credentials লাইব্রেরির 1.6.0-beta03 ভার্সন থেকে উপলভ্য।

প্রয়োগ

Signal API ব্যবহার করতে, এইসব ধাপ অনুসরণ করুন:

  1. আপনার প্রোজেক্টে ক্রেডেনশিয়াল ম্যানেজার ডিপেন্ডেন্সি যোগ করুন।

    কোটলিন

    dependencies {
        implementation("androidx.credentials:credentials:1.7.0-alpha03")
    }

    গ্রোভি

    dependencies {
        implementation "androidx.credentials:credentials:1.7.0-alpha03"
    }

  2. সিগন্যাল API কল করুন

    ক্রেডেনশিয়াল প্রদানকারীকে সিগন্যাল অনুরোধ পাঠাতে, কাজ করে এমন সিগন্যাল অনুরোধ ব্যবহার করুন। প্রতিটি সিগন্যাল অনুরোধের ধরনের জন্য একটি JSON অনুরোধ প্রয়োজন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

    • অজানা ক্রেডেনশিয়াল (SignalUnknownCredentialRequest)

      SignalUnknownCredentialRequest ব্যবহার করে জানান যে ক্রেডেনশিয়াল বাতিল করা হয়েছে এবং অজানা হিসেবে বিবেচনা করা হয়েছে। ক্রেডেনশিয়াল প্রোভাইডার এই সিগন্যাল পেলে, এটি ক্রেডেনশিয়াল লুকিয়ে রাখে বা মুছে দেয়।

      ব্যবহার

      রিলাইং পার্টি পাসকী অ্যাসারশন যাচাই করতে না পারলে এই সিগন্যাল ব্যবহার করুন। এর অর্থ হল পাসকীটি সঠিক নয় এবং ক্রেডেনশিয়াল প্রদানকারীকে এটি লুকাতে বা সরাতে হবে।

      এই অনুরোধের জন্য প্রয়োজনীয় JSON প্যারামিটার হল rpId এবং credentialId। JSON স্ট্রাকচার সম্পর্কে আরও জানতে, signalUnknownCredential বিকল্প দেখুন।

      credentialManager.signalCredentialState(
          SignalUnknownCredentialRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("credentialId", credentialId /* [String] Credential ID of the credential to be hidden or deleted */)
              }.toString()
          )
      )
      
    • গ্রহণ করা সব ক্রেডেনশিয়াল (SignalAllAcceptedCredentialIdsRequest)

      গ্রহণ করা হয়েছে এমন সব ক্রেডেনশিয়ালের সেট সহ ক্রেডেনশিয়াল প্রোভাইডারদের বিজ্ঞপ্তি দিতে SignalAllAcceptedCredentialIdsRequest ব্যবহার করুন। ক্রেডেনশিয়াল প্রোভাইডার সিগন্যাল পেলে, ক্রেডেনশিয়াল প্রোভাইডার এই তালিকায় অন্তর্ভুক্ত নয় এমন যেকোনও ক্রেডেনশিয়াল লুকিয়ে রাখে বা মুছে দেয় অথবা আগে লুকানো যেকোনও ক্রেডেনশিয়াল যা এখন তালিকায় অন্তর্ভুক্ত করা হয়েছে তা আনহাইড করে।

      ব্যবহার

      রিলাইং পার্টির মাধ্যমে পাসকী যাচাইকরণ ব্যর্থ হলে এই সিগন্যাল ব্যবহার করুন। এই ব্যর্থতার অর্থ হল পাসকীটি সঠিক নয় এবং ক্রেডেনশিয়াল প্রদানকারীর দ্বারা অবশ্যই লুকানো বা সরানো উচিত। এছাড়াও, ক্রেডেনশিয়াল প্রদানকারীদের কাছে পরিচিত ক্রেডেনশিয়াল আইডির সেট ব্রডকাস্ট করার প্রয়োজন হলে, আপনি এই সিগন্যাল ব্যবহার করতে পারবেন।

      এই অনুরোধের জন্য প্রয়োজনীয় JSON প্যারামিটার হল rpId, userId এবং allAcceptedCredentialIds। JSON স্ট্রাকচার সম্পর্কে আরও তথ্য পেতে, signalAllAcceptedCredential বিকল্প দেখুন।

      credentialManager.signalCredentialState(
          SignalAllAcceptedCredentialIdsRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("userId", userId /* [String] User ID of the current user */)
                  put(
                      "allAcceptedCredentialIds",
                      JSONArray(credentialIdsList /* [List<String>] List of accepted Credential IDs */)
                  )
              }.toString()
          )
      )
      
    • বর্তমান ব্যবহারকারীর বিবরণ (SignalCurrentUserDetailsRequest)

      ক্রেডেনশিয়াল প্রদানকারীকে জানাতে SignalCurrentUserDetailsRequest ব্যবহার করুন যে মেটাডেটা, যেমন প্রদত্ত ব্যবহারকারীর জন্য ব্যবহারকারীর নাম এবং প্রদর্শিত নাম, আপডেট করা হয়েছে এবং ক্রেডেনশিয়াল প্রদানকারীতে উপস্থিত হওয়া উচিত।

      ব্যবহার

      ব্যবহারকারী বা রিলাইং পার্টি ব্যবহারকারীর অ্যাকাউন্টের সাথে যুক্ত পাসকী মেটাডেটা আপডেট করলে এই সিগন্যাল ব্যবহার করুন।

      এই অনুরোধের জন্য প্রয়োজনীয় JSON প্যারামিটার হল rpId, userId, name এবং displayName। JSON স্ট্রাকচার সম্পর্কে আরও জানতে, signalCurrentUserDetails বিকল্প দেখুন।

      credentialManager.signalCredentialState(
          SignalCurrentUserDetailsRequest(
              requestJson = JSONObject().apply {
                  put("rpId", rpId /* [String] RP ID of the relying party */)
                  put("userId", userId /* [String] User ID of the current user */)
                  put("name", name /* [String] New Name to be updated for the current user */)
                  put("displayName", displayName /* [String] New display name to be updated for the current user */)
              }.toString()
          )
      )
      

ইমপ্লিমেন্টেশন পরীক্ষা করুন

Signal API-এর প্রয়োগ পরীক্ষা করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:

  1. MyVault নামের ক্রেডেনশিয়াল প্রোভাইডার স্যাম্পেল ইনস্টল করুন।

  2. সেটিংস > পাসওয়ার্ড, পাসকী ও অ্যাকাউন্ট > পছন্দের পরিষেবা বিকল্পে গিয়ে ক্রেডেনশিয়াল প্রোভাইডার হিসেবে MyVault চালু করুন।

    Android সেটিংসের 'পছন্দের পরিষেবা' মেনু, যেখানে MyVault-কে ক্রেডেনশিয়াল প্রদানকারী হিসেবে চালু করা হয়েছে।

  3. সেটিংস > অ্যাপ > MyVault > বিজ্ঞপ্তি বিকল্পে গিয়ে MyVault-এর জন্য সব বিজ্ঞপ্তি চালু করুন।

    MyVault অ্যাপের বিজ্ঞপ্তি মেনু, যেখানে সব বিজ্ঞপ্তি চালু করা আছে বলে দেখানো হচ্ছে।

  4. সেটিংস > অ্যাপ > MyVault > বিজ্ঞপ্তি > বিভাগ > Signal API বিজ্ঞপ্তি চ্যানেল-এ গিয়ে বিজ্ঞপ্তির জন্য স্ক্রিনে পপ-আপ চালু আছে কিনা তা যাচাই করুন।

    MyVault-এর জন্য Signal API বিজ্ঞপ্তি চ্যানেল সেটিংস, 'স্ক্রিনে পপ-আপ' বিকল্প চালু করা আছে বলে দেখাচ্ছে।

  5. আপনার অ্যাপে, ক্রেডেনশিয়াল প্রোভাইডারকে সিগন্যাল অনুরোধ পাঠায় এমন ফ্লো ট্রিগার করুন। আপনি স্ক্রিনে MyVault থেকে বিজ্ঞপ্তি দেখতে পাবেন। এর মাধ্যমে যাচাই করা হয় যে ক্রেডেনশিয়াল প্রদানকারী অনুরোধটি পেয়েছে।