पासकी बनाने पर, क्रेडेंशियल सेव करने वाली पार्टी का सर्वर कुछ जानकारी सेव करता है. वहीं, क्रेडेंशियल देने वाली कंपनी, जैसे कि Google Password Manager, अन्य जानकारी सेव करता है. इस कार्रवाई के ये असर होंगे:
- क्रेडेंशियल सेव करने वाली पार्टी का सर्वर, सार्वजनिक पासकोड क्रेडेंशियल सेव करता है.
- क्रेडेंशियल देने वाली कंपनी, उपयोगकर्ता नाम, डिसप्ले नाम, निजी पासकोड, और इससे जुड़ा अन्य मेटाडेटा सेव करती है. इस मेटाडेटा की मदद से, उपयोगकर्ता साइन-इन के दौरान ज़रूरी पासकी की पहचान कर पाते हैं और उसे चुन पाते हैं.
क्रेडेंशियल सेव करने वाली पार्टी के सर्वर और क्रेडेंशियल देने वाली कंपनी के पास सेव किए गए डेटा में अंतर होने पर, लोगों का अनुभव खराब हो सकता है. इन स्थितियों में समस्याएं आ सकती हैं:
- क्रेडेंशियल सेव करने वाली पार्टी के सर्वर से कोई क्रेडेंशियल मिटा दिया जाता है, लेकिन क्रेडेंशियल देने वाली कंपनी के सर्वर से नहीं. इससे क्रेडेंशियल देने वाली कंपनी, मिटाया गया क्रेडेंशियल उपयोगकर्ता को दिखाती है.
- क्रेडेंशियल सेव करने वाली पार्टी के सर्वर पर उपयोगकर्ता नाम या डिसप्ले नाम अपडेट किया जाता है, लेकिन क्रेडेंशियल देने वाली कंपनी के सर्वर पर नहीं. इससे क्रेडेंशियल देने वाली कंपनी, पुरानी जानकारी दिखाती है.
क्रेडेंशियल मैनेजर के सिग्नल एपीआई की मदद से, क्रेडेंशियल सेव करने वाली पार्टियां, क्रेडेंशियल देने वाली कंपनियों से संपर्क करके क्रेडेंशियल मिटा सकती हैं. साथ ही, उपयोगकर्ता का मेटाडेटा अपडेट कर सकती हैं. जैसे, उपयोगकर्ता नाम और डिसप्ले नाम. अलग-अलग स्थितियों के लिए, अनुरोध के तीन टाइप उपलब्ध हैं:
SignalUnknownCredentialRequest- इससे पता चलता है कि कोई खास क्रेडेंशियल अब मान्य नहीं है. इसलिए, इसे क्रेडेंशियल देने वाली कंपनी के सर्वर से छिपा दिया जाना चाहिए या हटा दिया जाना चाहिए.
SignalAllAcceptedCredentialIdsRequest- इससे क्रेडेंशियल देने वाली कंपनी को, स्वीकार किए गए क्रेडेंशियल आईडी की सूची मिलती है.
SignalCurrentUserDetailsRequest- इससे उपयोगकर्ता का मेटाडेटा अपडेट होता है.
वर्शन की ज़रूरी शर्तें
Signal API, Android 15 या इसके बाद के वर्शन वाले डिवाइसों पर उपलब्ध है. साथ ही, यह
1.6.0-beta03 वर्शन से androidx.credentials
लाइब्रेरी पर उपलब्ध है.
लागू करना
Signal API का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
अपने प्रोजेक्ट में, क्रेडेंशियल मैनेजर की डिपेंडेंसी जोड़ें.
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha01") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha01" }
Signal 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 को लागू करने की सुविधा की जांच करने के लिए, यह तरीका अपनाएं:
MyVault नाम का क्रेडेंशियल देने वाली कंपनी का सैंपल इंस्टॉल करें.
सेटिंग > पासवर्ड, पासकी, और खाते > पसंदीदा सेवा में जाकर, MyVault को क्रेडेंशियल देने वाली कंपनी के तौर पर चालू करें.
सेटिंग > ऐप्लिकेशन > MyVault > सूचनाएं में जाकर, MyVault के लिए सभी सूचनाएं चालू करें.
सेटिंग > ऐप्लिकेशन > MyVault > सूचनाएं > कैटेगरी > Signal API Notification Channel में जाकर, पुष्टि करें कि सूचनाओं के लिए स्क्रीन पर पॉप-अप करें सेटिंग चालू है.
अपने ऐप्लिकेशन में, उन फ़्लो को ट्रिगर करें जो क्रेडेंशियल देने वाली कंपनी को सिग्नल के अनुरोध भेजते हैं. आपको स्क्रीन पर MyVault से सूचनाएं दिखनी चाहिए. इससे पुष्टि होती है कि क्रेडेंशियल देने वाली कंपनी को अनुरोध मिल गए हैं.