अगर आपका Android ऐप्लिकेशन, Firebase ML के किसी क्लाउड एपीआई का इस्तेमाल करता है, तो अपने ऐप्लिकेशन को प्रोडक्शन में लॉन्च करने से पहले, आपको बिना अनुमति वाले एपीआई का ऐक्सेस रोकने के लिए कुछ और कदम उठाने चाहिए.
अपने प्रोडक्शन ऐप्लिकेशन के लिए, आपको यह पक्का करना होगा कि सिर्फ़ पुष्टि किए गए क्लाइंट ही क्लाउड सेवाओं को ऐक्सेस कर सकें. (ध्यान दें कि बताए गए तरीके का इस्तेमाल करके, सिर्फ़ ऐसे डिवाइसों की पुष्टि की जा सकती है जिन्हें रूट नहीं किया गया है.)
इसके बाद, सिर्फ़ डीबग करने के लिए एपीआई पासकोड बनाएं, जिसका इस्तेमाल टेस्ट और डेवलपमेंट के दौरान सुविधा के लिए किया जा सकता है.
1. अपने प्रोडक्शन ऐप्लिकेशन को Firebase के साथ रजिस्टर करना
सबसे पहले, अपने प्रोडक्शन ऐप्लिकेशन को Firebase के साथ रजिस्टर करें.
पक्का करें कि आपके पास अपने ऐप्लिकेशन के SHA-1 हस्ताक्षर हैं. इसका तरीका जानने के लिए, अपने क्लाइंट की पुष्टि करना देखें.
Firebase कंसोल में, प्रोजेक्ट सेटिंग पर जाएं. इसके बाद, सेटिंग टैब को चुनें.
नीचे की ओर स्क्रोल करके, आपके ऐप्लिकेशन कार्ड पर जाएं. इसके बाद, अपना Android ऐप्लिकेशन चुनें.
अपने ऐप्लिकेशन की जानकारी में, SHA-1 हस्ताक्षर जोड़ें.
2. अपनी एपीआई कुंजियों के दायरे को सीमित करना
इसके बाद, Cloud Vision API को ऐक्सेस करने की अनुमति न देने के लिए, अपनी मौजूदा एपीआई कुंजियां कॉन्फ़िगर करें:
Google Cloud कंसोल का क्रेडेंशियल पेज खोलें. जब कहा जाए, तब अपना प्रोजेक्ट चुनें.
सूची में मौजूद हर मौजूदा एपीआई पासकोड के लिए, बदलाव करने वाला व्यू खोलें.
एपीआई से जुड़ी पाबंदियां सेक्शन में, कुंजी पर पाबंदी लगाएं को चुनें. इसके बाद, उन सभी एपीआई की सूची में जोड़ें जिनका ऐक्सेस आपको एपीआई पासकोड से चाहिए. पक्का करें कि Cloud Vision API को शामिल नहीं किया गया हो.
किसी एपीआई पासकोड की एपीआई से जुड़ी पाबंदियों को कॉन्फ़िगर करने पर, आपको उन एपीआई के बारे में साफ़ तौर पर जानकारी दी जाती है जिनका ऐक्सेस कुंजी के पास है. डिफ़ॉल्ट रूप से, जब एपीआई से जुड़ी पाबंदियां सेक्शन में कुंजी पर पाबंदी न लगाएं को चुना जाता है, तो प्रोजेक्ट के लिए चालू किए गए किसी भी एपीआई को ऐक्सेस करने के लिए, एपीआई पासकोड का इस्तेमाल किया जा सकता है.
अब आपकी मौजूदा एपीआई पासकोड, क्लाउड पर उपलब्ध एमएल सेवाओं का ऐक्सेस नहीं देंगे. हालांकि, हर पासकोड उन सभी एपीआई के लिए काम करता रहेगा जिन्हें आपने एपीआई से जुड़ी पाबंदियों की सूची में जोड़ा है.
ध्यान दें कि अगर आने वाले समय में कोई और एपीआई चालू किया जाता है, तो आपको उसे लागू एपीआई पासकोड के लिए, एपीआई से जुड़ी पाबंदियों की सूची में जोड़ना होगा.
3. सिर्फ़ डीबग एपीआई पासकोड बनाना और उसका इस्तेमाल करना
आखिर में, सिर्फ़ डेवलपमेंट के लिए इस्तेमाल की जाने वाली नई एपीआई कुंजी बनाएं. Firebase ML इस एपीआई पासकोड का इस्तेमाल, ऐसी जगहों पर Google Cloud की सेवाओं को ऐक्सेस करने के लिए कर सकता है जहां ऐप्लिकेशन की पुष्टि नहीं की जा सकती. जैसे, एम्युलेटर पर काम करते समय.
डेवलपमेंट के लिए इस्तेमाल किया जाने वाला नया एपीआई पासकोड बनाएं:
Google Cloud कंसोल का क्रेडेंशियल पेज खोलें. जब कहा जाए, तब अपना प्रोजेक्ट चुनें.
क्रेडेंशियल बनाएं > एपीआई पासकोड पर क्लिक करें और नई एपीआई पासकोड को नोट करें. इस पासकोड की मदद से, ऐसे ऐप्लिकेशन भी एपीआई को ऐक्सेस कर सकते हैं जिनकी पुष्टि नहीं हुई है. इसलिए, इस पासकोड को गोपनीय रखें.
यह पक्का करने के लिए कि आपके रिलीज़ किए गए ऐप्लिकेशन के साथ नई डीबग एपीआई पासकोड लीक न हो, Android मेनिफ़ेस्ट फ़ाइल में डीबग एपीआई पासकोड की जानकारी दें. इस फ़ाइल का इस्तेमाल सिर्फ़ डीबग बिल्ड के लिए किया जाता है:
अगर आपके पास पहले से कोई डीबग मेनिफ़ेस्ट नहीं है, तो एक बनाएं. इसके लिए, फ़ाइल > नया > अन्य > Android मेनिफ़ेस्ट फ़ाइल पर क्लिक करें. इसके बाद, टारगेट सोर्स सेट से
debug
चुनें.डीबग मेनिफ़ेस्ट में, यह एलान जोड़ें:
<application> <meta-data android:name="com.firebase.ml.cloud.ApiKeyForDebug" android:value="your-debug-api-key" /> </application>
अपने ऐप्लिकेशन में, Firebase ML को कॉन्फ़िगर करें, ताकि प्रोडक्शन में अपने क्लाइंट की पुष्टि करने के लिए, सर्टिफ़िकेट फ़िंगरप्रिंट मैचिंग का इस्तेमाल किया जा सके. साथ ही, सिर्फ़ डीबग बिल्ड में एपीआई पासकोड (डीबग पासकोड) का इस्तेमाल किया जा सके:
Kotlin+KTX
val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder() if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch() } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f) // ... // And lastly: val options = optionsBuilder.build() FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)
Java
FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder = new FirebaseVisionCloudImageLabelerOptions.Builder(); if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch(); } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f); // ... // And lastly: FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build(); FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);
अगले चरण
Firebase की अन्य सुविधाओं का इस्तेमाल करते समय, अपने ऐप्लिकेशन को लॉन्च करने के लिए तैयार करने के बारे में जानकारी पाने के लिए, लॉन्च की चेकलिस्ट देखें.