अगर आपका 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
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 की अन्य सुविधाओं का इस्तेमाल करते समय, ऐप्लिकेशन लॉन्च करने की तैयारी करने के बारे में जानकारी पाने के लिए, लॉन्च चेकलिस्ट देखें.