ब्लॉक स्टोर

कई उपयोगकर्ता अभी भी एक नया Android डिवाइस सेट करते समय अपने स्वयं के क्रेडेंशियल प्रबंधित करते हैं। यह मैनुअल प्रक्रिया चुनौतीपूर्ण हो सकती है और अक्सर इसका परिणाम खराब उपयोगकर्ता अनुभव होता है। ब्लॉक स्टोर एपीआई, के द्वारा संचालित एक पुस्तकालय Google Play सेवाओं , दिखता क्षुधा उपयोगकर्ता पासवर्ड सहेजने के साथ जुड़े जटिलता या सुरक्षा जोखिम के बिना उपयोगकर्ता प्रमाणिकता को सहेजने के लिए एक तरीका प्रदान करके इस हल करने के लिए।

ब्लॉक स्टोर एपीआई आपके ऐप को उपयोगकर्ता क्रेडेंशियल्स को स्टोर करने की अनुमति देता है जिसे बाद में नए डिवाइस पर उपयोगकर्ताओं को फिर से प्रमाणित करने के लिए पुनः प्राप्त किया जा सकता है। यह उपयोगकर्ता के लिए एक अधिक सहज अनुभव प्रदान करने में मदद करता है, क्योंकि नए डिवाइस पर पहली बार आपका ऐप लॉन्च करते समय उन्हें साइन-इन स्क्रीन देखने की आवश्यकता नहीं होती है।

ब्लॉक स्टोर का उपयोग करने के लाभों में निम्नलिखित शामिल हैं:

  • डेवलपर्स के लिए एन्क्रिप्टेड क्रेडेंशियल स्टोरेज समाधान। जब भी संभव हो क्रेडेंशियल्स एंड-टू-एंड एन्क्रिप्टेड होते हैं।
  • उपयोगकर्ता नाम और पासवर्ड के बजाय टोकन सहेजें।
  • साइन-इन प्रवाह से घर्षण को हटा दें।
  • उपयोगकर्ताओं को जटिल पासवर्ड के प्रबंधन के बोझ से बचाएं।
  • Google उपयोगकर्ता की पहचान की पुष्टि करता है.

शुरू करने से पहले

अपना ऐप तैयार करने के लिए, निम्नलिखित अनुभागों में दिए गए चरणों को पूरा करें।

अपना ऐप कॉन्फ़िगर करें

अपनी परियोजना-स्तर में build.gradle फ़ाइल में शामिल हैं, गूगल के Maven भंडार दोनों अपने में buildscript और allprojects वर्गों:

buildscript {
  repositories {
    google()
    mavenCentral()
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

जोड़ें Google Play सेवाओं के अपने को ब्लॉक स्टोर एपीआई के लिए निर्भरता मॉड्यूल के Gradle निर्माण फ़ाइल , जो आमतौर पर है app/build.gradle :

dependencies {
  implementation 'com.google.android.gms:play-services-auth-blockstore:16.1.0'
}

यह काम किस प्रकार करता है

ब्लॉक स्टोर एक टोकन-आधारित साइन-इन तंत्र है जो एंड-टू-एंड एन्क्रिप्टेड है और बैकअप के शीर्ष पर बनाया गया है और बुनियादी ढांचे को बहाल करता है। निम्नलिखित चरण बताते हैं कि ब्लॉक स्टोर का उपयोग करने वाला ऐप कैसे काम करेगा:

  1. आपके ऐप के प्रमाणीकरण प्रवाह के दौरान, या उसके बाद कभी भी, आप बाद में पुनर्प्राप्ति के लिए उपयोगकर्ता के प्रमाणीकरण टोकन को ब्लॉक स्टोर में संग्रहीत कर सकते हैं।
  2. टोकन को स्थानीय रूप से संग्रहीत किया जाएगा और जब संभव हो तो एंड-टू-एंड एन्क्रिप्टेड क्लाउड पर भी बैकअप लिया जा सकता है।
  3. जब उपयोगकर्ता किसी नए डिवाइस पर पुनर्स्थापना प्रवाह शुरू करता है तो डेटा स्थानांतरित हो जाता है।
  4. यदि उपयोगकर्ता पुनर्स्थापना प्रवाह के दौरान आपके ऐप को पुनर्स्थापित करता है, तो आपका ऐप नए डिवाइस पर ब्लॉक स्टोर से सहेजे गए टोकन को पुनः प्राप्त कर सकता है।

टोकन सहेजा जा रहा है

जब कोई उपयोगकर्ता आपके ऐप में साइन इन करता है, तो आप उस उपयोगकर्ता के लिए बनाए गए प्रमाणीकरण टोकन को ब्लॉक स्टोर में सहेज सकते हैं। यह फोन करके किया जाता है setBytes() का एक उदाहरण पर StoreBytesData.Builder स्रोत डिवाइस के लिए उपयोगकर्ता के क्रेडेंशियल्स स्टोर करने के लिए। आपके द्वारा टोकन को ब्लॉक स्टोर के साथ सहेजने के बाद, टोकन को एन्क्रिप्ट किया जाता है और डिवाइस पर स्थानीय रूप से संग्रहीत किया जाता है।

निम्न नमूना दिखाता है कि प्रमाणीकरण टोकन को स्थानीय डिवाइस पर कैसे सहेजा जाए:

val client = Blockstore.getClient(this)
val data = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)
        .build()
client.storeBytes(data)
        .addOnSuccessListener{ result ->
            Log.d(TAG, "Stored: ${result.getBytesStored()}")
        }
        .addOnFailureListener { e ->
            Log.e(TAG, “Failed to store bytes”, e)
        }

टोकन प्राप्त करना

बाद में, जब कोई उपयोगकर्ता किसी नए डिवाइस पर पुनर्स्थापना प्रवाह से गुजरता है, तो Google Play सेवाएं पहले उपयोगकर्ता का सत्यापन करती हैं, फिर आपका ब्लॉक स्टोर डेटा पुनर्प्राप्त करती हैं। उपयोगकर्ता पहले ही आपके ऐप डेटा को पुनर्स्थापना प्रवाह के एक भाग के रूप में पुनर्स्थापित करने के लिए सहमत हो चुका है, इसलिए किसी अतिरिक्त सहमति की आवश्यकता नहीं है। उपयोगकर्ता अपने अनुप्रयोग को खोलता है, आपको कॉल करके ब्लॉक स्टोर से अपने टोकन का अनुरोध कर सकते retrieveBytes() । फिर से प्राप्त टोकन का उपयोग उपयोगकर्ता को नए डिवाइस पर साइन इन रखने के लिए किया जा सकता है।

निम्न नमूना दिखाता है कि एन्क्रिप्टेड टोकन को कैसे पुनर्प्राप्त किया जाए जो पहले ब्लॉक स्टोर के साथ संग्रहीत किया गया था:

val client = Blockstore.getClient(this)
client.retrieveBytes()
        .addOnSuccessListener { result ->
          Log.d(TAG, "Retrieved: ${String(result)}")
        .addOnFailureListener { e ->
          Log.e(TAG, “Failed to retrieve bytes”, e)
        }
}

एंड-टू-एंड एन्क्रिप्शन

एंड-टू-एंड एन्क्रिप्शन उपलब्ध कराने के लिए, डिवाइस को एंड्रॉइड 9 या उच्चतर चलाना चाहिए, और उपयोगकर्ता ने अपने डिवाइस के लिए स्क्रीन लॉक (पिन, पैटर्न या पासवर्ड) सेट किया होगा। यदि एन्क्रिप्शन फोन करके डिवाइस पर उपलब्ध हो जाएगा आप सत्यापित कर सकते isEndToEndEncryptionAvailable()

निम्न नमूना दिखाता है कि कैसे सत्यापित किया जाए कि क्लाउड बैकअप के दौरान एन्क्रिप्शन उपलब्ध होगा या नहीं:

client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { result ->
          Log.d(TAG, "Will Block Store cloud backup be end-to-end encrypted? $result")
        }

क्लाउड बैकअप सक्षम करें

, बादल बैकअप सक्षम जोड़ने के लिए setShouldBackupToCloud() आपके लिए विधि StoreBytesData वस्तु। ब्लॉक स्टोर संग्रहीत की जाने वाली बाइट क्लाउड समय-समय पर बैकअप होगा setShouldBackupToCloud() सच के रूप में स्थापित किया जाएगा।

निम्न नमूना दिखाता है कि कैसे बादल बैकअप केवल जब बादल बैकअप एंड-टू-एंड एन्क्रिप्टेड है सक्षम करने के लिए:

val client = Blockstore.getClient(this)
val storeBytesDataBuilder = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)
        .build()
client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { isE2EEAvailable ->
          if (isE2EEAvailable) {
            storeBytesDataBuilder.setShouldBackupToCloud(true)
            Log.d(TAG, "E2EE is available, enable backing up bytes to the cloud.")

            client.storeBytes(storeBytesDataBuilder.build())
                .addOnSuccessListener { result ->
                  Log.d(TAG, "stored: ${result.getBytesStored()}")
                }.addOnFailureListener { e ->
                  Log.e(TAG, “Failed to store bytes”, e)
                }
          } else {
            Log.d(TAG, "E2EE is not available, only store bytes for D2D restore.")
          }
        }

परीक्षण कैसे करें

पुनर्स्थापना प्रवाह का परीक्षण करने के लिए विकास के दौरान निम्न विधियों का उपयोग करें।

वही डिवाइस अनइंस्टॉल / रीइंस्टॉल

उपयोगकर्ता बैकअप सेवाओं को सक्षम बनाता है (यह सेटिंग> Google> बैकअप पर जाँच की जा सकती), ब्लॉक स्टोर डेटा एप्लिकेशन की स्थापना रद्द करें / पुनर्स्थापना भर में एक समान होती है।

आप परीक्षण करने के लिए इन चरणों का पालन कर सकते हैं:

  1. BlockStore API को अपने परीक्षण ऐप में एकीकृत करें।
  2. अपने डेटा को स्टोर करने के लिए ब्लॉकस्टोर एपीआई को लागू करने के लिए टेस्ट ऐप का इस्तेमाल करें।
  3. अपने परीक्षण ऐप को अनइंस्टॉल करें और फिर उसी डिवाइस पर अपने ऐप को फिर से इंस्टॉल करें।
  4. अपना डेटा पुनर्प्राप्त करने के लिए BlockStore API को लागू करने के लिए परीक्षण ऐप का उपयोग करें।
  5. सत्यापित करें कि पुनर्प्राप्त बाइट वही हैं जो स्थापना रद्द करने से पहले संग्रहीत किए गए थे।

डिवाइस करने वाली डिवाइस

ज्यादातर मामलों में, इसके लिए लक्ष्य डिवाइस के फ़ैक्टरी रीसेट की आवश्यकता होगी। इसके बाद आप में प्रवेश कर सकते एंड्रॉयड वायरलेस बहाल प्रवाह या गूगल केबल बहाल (समर्थित उपकरणों के लिए)।

बादल बहाल

  1. Blockstore API को अपने परीक्षण ऐप में एकीकृत करें। टेस्ट ऐप को प्ले स्टोर पर सबमिट करना होगा।
  2. सोर्स डिवाइस पर, अपने डेटा को स्टोर करने के लिए ब्लॉकस्टोर एपीआई को कॉल करने के लिए टेस्ट ऐप का इस्तेमाल करें, जिसमें shouldBackUpToCloud सही पर सेट हो।
  3. हे के लिए और उपकरणों से ऊपर, आप मैन्युअल रूप से ब्लॉक स्टोर बादल बैकअप को गति प्रदान कर सकते हैं: सेटिंग> Google> बैकअप, "बैकअप करें" बटन पर क्लिक करें।
    1. यह सत्यापित करने के लिए कि ब्लॉक स्टोर क्लाउड बैकअप सफल हुआ, आप यह कर सकते हैं:
      1. बैकअप समाप्त होने के बाद, "CloudSyncBpTkSvc" टैग के साथ लॉग लाइन खोजें।
      2. आपको इस तरह की लाइनें दिखनी चाहिए: "......, CloudSyncBpTkSvc: सिंक परिणाम: SUCCESS, ..., अपलोड किया गया आकार: XXX बाइट्स ..."
    2. ब्लॉक स्टोर क्लाउड बैकअप के बाद, 5 मिनट की "कूल डाउन" अवधि होती है। उस 5 मिनट के भीतर, "अभी बैकअप लें" बटन पर क्लिक करने से दूसरा ब्लॉक स्टोर क्लाउड बैकअप ट्रिगर नहीं होगा।
  4. फ़ैक्टरी लक्ष्य डिवाइस को रीसेट कर देती है और क्लाउड रिस्टोर फ़्लो से गुज़रती है। पुनर्स्थापना प्रवाह के दौरान अपने परीक्षण ऐप को पुनर्स्थापित करने के लिए चुनें। बादल बारे में अधिक जानकारी प्रवाह को बहाल के लिए, देखें समर्थित बादल प्रवाह को बहाल
  5. लक्ष्य डिवाइस पर, अपने डेटा को पुनः प्राप्त करने के लिए ब्लॉकस्टोर एपीआई को लागू करने के लिए परीक्षण ऐप का उपयोग करें।
  6. सत्यापित करें कि पुनर्प्राप्त बाइट वही हैं जो स्रोत डिवाइस में संग्रहीत किए गए थे।