API कुंजी एक अद्वितीय स्ट्रिंग है जिसका उपयोग Firebase और Google सेवाओं के साथ सहभागिता करते समय आपके Firebase प्रोजेक्ट के अनुरोधों को रूट करने के लिए किया जाता है। यह पृष्ठ API कुंजियों के बारे में मूलभूत जानकारी के साथ-साथ Firebase ऐप्स के साथ API कुंजियों के उपयोग और प्रबंधन के लिए सर्वोत्तम प्रक्रियाओं का वर्णन करता है।
API कुंजियों और Firebase के बारे में सामान्य जानकारी
Firebase के लिए API कुंजियां सामान्य API कुंजियों से भिन्न होती हैं
आम तौर पर एपीआई कुंजी का उपयोग कैसे किया जाता है, इसके विपरीत, फायरबेस सेवाओं के लिए एपीआई कुंजियों का उपयोग बैकएंड संसाधनों तक पहुंच को नियंत्रित करने के लिए नहीं किया जाता है ; यह केवल फायरबेस सुरक्षा नियमों (यह नियंत्रित करने के लिए कि कौन से उपयोगकर्ता संसाधनों तक पहुंच सकते हैं) और ऐप चेक (यह नियंत्रित करने के लिए कि कौन से ऐप्स संसाधनों तक पहुंच सकते हैं) के साथ किया जा सकता है।
आमतौर पर, आपको एपीआई कुंजियों की तेजी से रक्षा करने की आवश्यकता होती है (उदाहरण के लिए, वॉल्ट सेवा का उपयोग करके या कुंजियों को पर्यावरण चर के रूप में सेट करके); हालांकि, फायरबेस सेवाओं के लिए एपीआई कुंजी कोड या चेक-इन कॉन्फ़िगरेशन फ़ाइलों में शामिल करना ठीक है।
हालांकि फायरबेस सेवाओं के लिए एपीआई कुंजी कोड में शामिल करने के लिए सुरक्षित हैं, कुछ विशिष्ट मामले हैं जब आपको अपनी एपीआई कुंजी के लिए सीमाएं लागू करनी चाहिए; उदाहरण के लिए, यदि आप Firebase ML, ईमेल/पासवर्ड साइन-इन विधि के साथ Firebase प्रमाणीकरण, या बिल योग्य Google क्लाउड API का उपयोग कर रहे हैं। इस पृष्ठ पर बाद में इन मामलों के बारे में और जानें।
एपीआई कुंजियाँ बनाना
एक Firebase प्रोजेक्ट में कई API कुंजियां हो सकती हैं, लेकिन प्रत्येक API कुंजी को केवल एक Firebase प्रोजेक्ट से संबद्ध किया जा सकता है।
जब आप निम्न में से कोई भी कार्य करते हैं तो Firebase स्वचालित रूप से आपके प्रोजेक्ट के लिए API कुंजियां बनाता है:
- एक फायरबेस प्रोजेक्ट बनाएं >
Browser key
स्वतः निर्मित - एक फायरबेस ऐप्पल ऐप बनाएं >
iOS key
ऑटो-निर्मित - एक फायरबेस Android ऐप बनाएं >
Android key
स्वतः निर्मित
आप Google क्लाउड कंसोल में अपनी स्वयं की API कुंजियां भी बना सकते हैं, उदाहरण के लिए विकास या डिबगिंग के लिए। इस बारे में और जानें कि इस पृष्ठ पर बाद में इसकी अनुशंसा कब की जा सकती है।
अपनी API कुंजियाँ ढूँढना
आप Google क्लाउड कंसोल में API और सेवाएँ > क्रेडेंशियल पैनल में अपने प्रोजेक्ट की सभी API कुंजियों को देख और प्रबंधित कर सकते हैं।
आप निम्न स्थानों पर यह भी पता लगा सकते हैं कि कौन सी API कुंजी स्वचालित रूप से किसी Firebase ऐप से मेल खाती है । डिफ़ॉल्ट रूप से, एक ही प्लेटफ़ॉर्म (Apple बनाम Android बनाम वेब) के लिए आपके प्रोजेक्ट के सभी Firebase ऐप्स एक ही API कुंजी का उपयोग करेंगे।
Firebase Apple Apps —
API_KEY
फ़ील्ड में Firebase कॉन्फ़िग फ़ाइल,
में ऐप की स्वतः-मिलान वाली API कुंजी ढूंढें।GoogleService-Info.plist Firebase Android ऐप्स —
current_key
फ़ील्ड में Firebase कॉन्फ़िग फ़ाइल,
में ऐप की स्वतः-मिलान वाली API कुंजी ढूँढें।google-services.json फ़ायरबेस वेब ऐप्स —
apiKey
फ़ील्ड में, Firebase कॉन्फ़िग ऑब्जेक्ट में ऐप की ऑटो-मैचेड API कुंजी ढूँढें।
एपीआई कुंजी का उपयोग करना
Firebase/Google सेवाओं के साथ इंटरैक्ट करते समय आपके Firebase प्रोजेक्ट की पहचान करने के लिए API कुंजियों का उपयोग किया जाता है। विशेष रूप से, उनका उपयोग कोटा और बिलिंग के लिए आपके प्रोजेक्ट के साथ API अनुरोधों को जोड़ने के लिए किया जाता है। वे सार्वजनिक डेटा तक पहुँचने के लिए भी उपयोगी हैं।
उदाहरण के लिए, आप क्वेरी पैरामीटर के रूप में REST API कॉल में इसके मान को पास करके स्पष्ट रूप से API कुंजी का उपयोग कर सकते हैं। यह उदाहरण दिखाता है कि आप डायनामिक लिंक लिंक शॉर्टनर एपीआई के लिए अनुरोध कैसे कर सकते हैं:
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
जब आपका ऐप्लिकेशन किसी Firebase API को कॉल करता है, तो आपका ऐप्लिकेशन आपके प्रोजेक्ट की API कुंजी के लिए अपने आप Firebase कॉन्फ़िग फ़ाइल/ऑब्जेक्ट में दिखेगा. हालाँकि, आप पर्यावरण चर सहित एक भिन्न तंत्र का उपयोग करके अपनी API कुंजियाँ सेट कर सकते हैं।
API कुंजियों पर प्रतिबंध लागू करें (अनुशंसित)
हालांकि फायरबेस सेवाओं के लिए एपीआई कुंजी को गुप्त रखना आवश्यक नहीं है, कुछ विशिष्ट मामले हैं (नीचे देखें) जिनमें आप अपने प्रोजेक्ट को एपीआई कुंजी के दुरुपयोग से बचाने के लिए अतिरिक्त उपाय करना चाह सकते हैं।
यदि आप पासवर्ड-आधारित प्रमाणीकरण का उपयोग करते हैं तो कोटा को कस लें
अगर आप पासवर्ड-आधारित Firebase प्रमाणीकरण का उपयोग करते हैं और किसी को आपकी API कुंजी मिल जाती है, तो वे तब तक आपके किसी भी Firebase प्रोजेक्ट के डेटाबेस या क्लाउड स्टोरेज डेटा तक नहीं पहुंच पाएंगे, जब तक कि यह डेटा Firebase सुरक्षा नियमों द्वारा सुरक्षित है । हालांकि, वे आपकी API कुंजी का उपयोग Firebase के प्रमाणीकरण समापन बिंदुओं तक पहुंचने और आपके प्रोजेक्ट के विरुद्ध प्रमाणीकरण अनुरोध करने के लिए कर सकते हैं।
इस संभावना को कम करने के लिए कि कोई व्यक्ति किसी क्रूर बल के हमले का प्रयास करने के लिए एपीआई कुंजी का दुरुपयोग कर सकता है, आप अपने ऐप की सामान्य ट्रैफ़िक अपेक्षाओं को दर्शाने के लिए identitytoolkit.googleapis.com
टूलकिट.googleapis.com एंडपॉइंट के डिफ़ॉल्ट कोटा को कस कर सकते हैं। ध्यान रखें कि यदि आप इस कोटा को सख्त करते हैं और आपका ऐप अचानक उपयोगकर्ताओं को प्राप्त कर लेता है, तो आपको कोटा बढ़ाने तक साइन-इन त्रुटियां मिल सकती हैं। आप Google क्लाउड कंसोल में अपने प्रोजेक्ट का API कोटा बदल सकते हैं।
विशिष्ट प्रकार के API के लिए अलग, प्रतिबंधित API कुंजियों का उपयोग करें
हालांकि फायरबेस सेवाओं के लिए उपयोग की जाने वाली एपीआई कुंजियों को आमतौर पर गुप्त मानने की आवश्यकता नहीं होती है, आपको Google क्लाउड एपीआई तक पहुंच प्रदान करने के लिए उपयोग की जाने वाली एपीआई कुंजियों के साथ कुछ अतिरिक्त सावधानी बरतनी चाहिए जिन्हें आपने मैन्युअल रूप से सक्षम किया है।
यदि आप एक Google क्लाउड एपीआई (किसी भी प्लेटफॉर्म पर) का उपयोग करते हैं जो फायरबेस द्वारा स्वचालित रूप से सक्षम नहीं है (जिसका अर्थ है कि आपने इसे स्वयं सक्षम किया है), तो आपको उन एपीआई के उपयोग के लिए अलग, प्रतिबंधित एपीआई कुंजी बनाने पर विचार करना चाहिए। यह विशेष रूप से महत्वपूर्ण है यदि एपीआई बिल योग्य Google क्लाउड सेवा के लिए है।
उदाहरण के लिए, यदि आप iOS पर Firebase ML के क्लाउड विज़न API का उपयोग करते हैं, तो आपको अलग API कुंजियाँ बनानी चाहिए जिनका उपयोग आप केवल Cloud Vision API तक पहुँचने के लिए करते हैं।
गैर-Firebase API के लिए अलग, प्रतिबंधित API कुंजियों का उपयोग करके, आप आवश्यकता पड़ने पर कुंजियों को घुमा सकते हैं या बदल सकते हैं और Firebase सेवाओं के आपके उपयोग को बाधित किए बिना API कुंजियों में अतिरिक्त प्रतिबंध जोड़ सकते हैं।
ये निर्देश बताते हैं कि Super Service API
नामक नकली एपीआई के लिए एक अलग, प्रतिबंधित एपीआई कुंजी कैसे बनाई जाए।
चरण 1: Super Service API
तक पहुंच को अस्वीकार करने के लिए अपनी मौजूदा API कुंजियों को कॉन्फ़िगर करें
Google क्लाउड कंसोल का क्रेडेंशियल पेज खोलें। संकेत मिलने पर, अपनी परियोजना का चयन करें।
सूची में प्रत्येक मौजूदा API कुंजी के लिए, संपादन दृश्य खोलें।
एपीआई प्रतिबंध अनुभाग में, प्रतिबंधित कुंजी का चयन करें, फिर सूची में उन सभी एपीआई को जोड़ें, जिन तक आप एपीआई कुंजी का उपयोग करना चाहते हैं। सुनिश्चित करें कि उस API को शामिल न करें जिसके लिए आप एक अलग API कुंजी बना रहे हैं (इस उदाहरण में,
Super Service API
)।जब आप एपीआई कुंजी के एपीआई प्रतिबंधों को कॉन्फ़िगर करते हैं, तो आप स्पष्ट रूप से उन एपीआई की घोषणा कर रहे हैं जिन तक कुंजी की पहुंच है। डिफ़ॉल्ट रूप से, जब एपीआई प्रतिबंध अनुभाग में चयनित कुंजी को प्रतिबंधित न करें , एक एपीआई कुंजी का उपयोग परियोजना के लिए सक्षम किसी भी एपीआई तक पहुंचने के लिए किया जा सकता है।
अब, आपकी मौजूदा एपीआई कुंजियां Super Service API
तक पहुंच प्रदान नहीं करेंगी, लेकिन प्रत्येक कुंजी किसी भी एपीआई के लिए काम करना जारी रखेगी जिसे आपने इसकी एपीआई प्रतिबंध सूची में जोड़ा है।
चरण 2: Super Service API
तक पहुंच के लिए एक नई एपीआई कुंजी बनाएं और उसका उपयोग करें
साख पृष्ठ पर वापस जाएँ। सुनिश्चित करें कि आपका फायरबेस प्रोजेक्ट अभी भी चयनित है।
क्रेडेंशियल बनाएं > API कुंजी पर क्लिक करें. नई एपीआई कुंजी पर ध्यान दें, फिर प्रतिबंधित कुंजी पर क्लिक करें।
एपीआई प्रतिबंध अनुभाग में, प्रतिबंधित कुंजी चुनें, फिर सूची में केवल
Super Service API
जोड़ें।यह नई एपीआई कुंजी केवल
Super Service API
तक पहुंच प्रदान करती है।नई API कुंजी का उपयोग करने के लिए अपने ऐप और सेवाओं को कॉन्फ़िगर करें।
परिवेश-विशिष्ट API कुंजियों का उपयोग करें (अनुशंसित)
अगर आप अलग-अलग परिवेशों के लिए अलग-अलग Firebase प्रोजेक्ट सेट करते हैं, जैसे स्टेजिंग और प्रोडक्शन, तो यह महत्वपूर्ण है कि प्रत्येक ऐप इंस्टेंस अपने संबंधित Firebase प्रोजेक्ट के साथ इंटरैक्ट करे। उदाहरण के लिए, आपके स्टेजिंग ऐप इंस्टेंस को कभी भी आपके प्रोडक्शन फायरबेस प्रोजेक्ट से बात नहीं करनी चाहिए। इसका मतलब यह भी है कि आपके स्टेजिंग ऐप को आपके स्टेजिंग फायरबेस प्रोजेक्ट से जुड़ी एपीआई कुंजियों का उपयोग करने की आवश्यकता है।
विकास से स्टेजिंग से उत्पादन तक कोड परिवर्तन को बढ़ावा देने वाली समस्याओं को कम करने के लिए, कोड में एपीआई कुंजी को शामिल करने के बजाय, या तो उन्हें पर्यावरण चर के रूप में सेट करें या उन्हें कॉन्फ़िगरेशन फ़ाइल में शामिल करें।
ध्यान दें कि यदि आप Firebase ML के साथ विकास के लिए Firebase स्थानीय एमुलेटर सूट का उपयोग कर रहे हैं, तो आपको केवल डीबग-ओनली API कुंजी बनानी चाहिए और उसका उपयोग करना चाहिए। उस तरह की कुंजी बनाने के निर्देश Firebase ML डॉक्स में पाए जाते हैं।
पूछे जाने वाले प्रश्न
आप निम्न में से किसी भी विकल्प का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि कौन सी API कुंजी आपके Firebase ऐप से संबद्ध है:
फायरबेस कंसोल
प्रोजेक्ट सेटिंग्स पर जाएं, और फिर नीचे अपने ऐप्स कार्ड तक स्क्रॉल करें।
रुचि के ऐप का चयन करें।
रुचि के ऐप के लिए फ़ायरबेस कॉन्फ़िगरेशन फ़ाइल/ऑब्जेक्ट प्राप्त करें, और फिर इसकी एपीआई कुंजी ढूंढें:
सेब :
GoogleService-Info.plist
डाउनलोड करें, और फिरAPI_KEY
फ़ील्ड ढूंढेंएंड्रॉइड :
google-services.json
डाउनलोड करें, रुचि के ऐप के लिए कॉन्फ़िगरेशन ढूंढें (इसके पैकेज का नाम देखें), और फिरcurrent_key
फ़ील्ड ढूंढेंवेब : कॉन्फिग विकल्प चुनें, और फिर
apiKey
फील्ड खोजें
फायरबेस सीएलआई
निम्न आदेश चलाकर रुचि के ऐप के लिए फ़ायरबेस कॉन्फ़िगरेशन फ़ाइल/ऑब्जेक्ट प्राप्त करें:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (इनमें से एक):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : आपके Firebase ऐप के लिए Firebase-असाइन किए गए विशिष्ट पहचानकर्ता ( अपना ऐप आईडी ढूंढें )
- PLATFORM (इनमें से एक):
ऐप्लिकेशन के प्रिंट किए गए Firebase कॉन्फ़िगरेशन में, उसकी API कुंजी ढूंढें:
सेब :
API_KEY
फ़ील्ड ढूंढेंएंड्रॉइड : रुचि के ऐप के लिए कॉन्फ़िगरेशन ढूंढें (इसके पैकेज का नाम देखें), और फिर
current_key
फ़ील्ड ढूंढेंवेब :
apiKey
फ़ील्ड ढूंढें
बाकी एपीआई
रुचि के ऐप के लिए लागू समापन बिंदु पर कॉल करके, और फिर अगले चरण में
apiKeyId
मान पास करके API कुंजी काapiKeyId
(UID) प्राप्त करें।- ऐप्पल : कॉल
projects.iosApps.get
.iosApps.get - Android : कॉल करें
projects.androidApps.get
- वेब : कॉल
projects.webApps.get
.webApps.get
- ऐप्पल : कॉल
projects.locations.keys.getKeyString
पर कॉल करके API कुंजी स्ट्रिंग प्राप्त करें।यह
keyString
वही मान है जो ऐप के कॉन्फ़िगरेशन आर्टिफ़ैक्ट ( Apple | Android | Web ) में पाया जा सकता है।
Firebase Apple Apps — प्रत्येक ऐप की अपनी कॉन्फ़िग फ़ाइल होती है और इसमें केवल एक API कुंजी सूचीबद्ध हो सकती है।
Firebase Android ऐप्स — Firebase प्रोजेक्ट के सभी Android ऐप्स एक ही कॉन्फ़िग फ़ाइल में सूचीबद्ध हैं, और प्रत्येक ऐप में केवल एक API कुंजी सूचीबद्ध हो सकती है। हालाँकि, इस कॉन्फ़िग फ़ाइल के प्रत्येक ऐप में एक अलग कुंजी सूचीबद्ध हो सकती है।
फायरबेस वेब ऐप्स - प्रत्येक ऐप का अपना कॉन्फिग ऑब्जेक्ट होता है और इसमें केवल एक एपीआई कुंजी सूचीबद्ध हो सकती है।
हालाँकि, आप एक ऐप के साथ कई API कुंजियों का उपयोग कर सकते हैं। आपको अपने ऐप के लिए इन अन्य एपीआई कुंजियों तक पहुंचने के लिए एक तंत्र प्रदान करना होगा, जैसे कि एक पर्यावरण चर के माध्यम से। अन्य API कुंजियों तक पहुँचने का तंत्र केवल उन API कुंजियों पर निर्भर नहीं हो सकता है जो आपकी Firebase कॉन्फ़िग फ़ाइल/ऑब्जेक्ट में सूचीबद्ध हैं।
जब आप पहली बार अपने ऐप की फ़ायरबेस कॉन्फ़िगरेशन फ़ाइल/ऑब्जेक्ट प्राप्त करते हैं, तो फ़ायरबेस जांचता है कि क्या आपके प्रोजेक्ट में कोई मौजूदा एपीआई कुंजियां हैं जिनमें "एप्लिकेशन प्रतिबंध" हैं जो ऐप से मेल खाते हैं (उदाहरण के लिए, ऐप्पल ऐप के लिए मेल खाने वाली बंडल आईडी)।
यदि फायरबेस को मेल खाने वाली कोई प्रतिबंधित कुंजी नहीं मिलती है, तो यह कॉन्फिग फ़ाइल/ऑब्जेक्ट में ऐप्पल ऐप्स के लिए iOS key
, एंड्रॉइड ऐप्स के लिए Android key
, और वेब ऐप्स के लिए Browser key
(यह मानते हुए कि ये कुंजी मौजूद हैं और कोई "एप्लिकेशन प्रतिबंध" नहीं है जो उन्हें उस ऐप से मेल खाने से रोकता है)।
हां, आप अपनी कॉन्फ़िगरेशन फ़ाइल/ऑब्जेक्ट से अपनी API कुंजी को मैन्युअल रूप से हटा सकते हैं। हालांकि, आपको अपने ऐप के लिए एपीआई कुंजी (जैसे एक पर्यावरण चर के माध्यम से) तक पहुंचने के लिए कुछ अन्य तंत्र प्रदान करना होगा । अन्यथा, Firebase सेवाओं के लिए कोई भी कॉल विफल हो जाएगी।
हाँ, आप किसी ऐप के साथ भिन्न API कुंजी को संबद्ध करने के लिए कॉन्फ़िग फ़ाइल/ऑब्जेक्ट को मैन्युअल रूप से संपादित कर सकते हैं।
ध्यान दें कि यदि आप कंसोल से अपने ऐप की कॉन्फ़िग फ़ाइल/ऑब्जेक्ट पुनः प्राप्त करते हैं , तो यह हमेशा उन API कुंजियों को सूचीबद्ध करेगा जो Firebase स्वचालित रूप से उस ऐप से मेल खाती हैं । इसलिए, आपको आवश्यकतानुसार अपने मैन्युअल संपादनों को दोहराना होगा।
नहीं, एक एपीआई कुंजी केवल एक विशिष्ट परियोजना की पहचान करती है और इसे किसी अन्य परियोजना में नहीं ले जाया जा सकता है।
यहां अमान्य API कुंजियों के कुछ सबसे सामान्य कारण दिए गए हैं:
एपीआई कुंजी में "एपीआई कुंजी प्रतिबंध" लागू होते हैं जो इसे कुंजी ("एप्लिकेशन प्रतिबंध") का उपयोग करने का प्रयास करने वाले ऐप के लिए अप्राप्य बनाते हैं या एपीआई ("एपीआई प्रतिबंध") के लिए अनुपयोगी होते हैं।
API कुंजी को Google क्लाउड कंसोल में प्रोजेक्ट से हटा दिया गया था।
ऐप की फ़ायरबेस कॉन्फ़िगरेशन फ़ाइल/ऑब्जेक्ट में सूचीबद्ध प्रोजेक्ट आईडी के लिए एपीआई कुंजी नहीं बनाई गई थी।
इस समस्या को ठीक करने का एक तरीका यह है कि आप अपने ऐप की फ़ायरबेस कॉन्फ़िग फ़ाइल/ऑब्जेक्ट का अद्यतन संस्करण प्राप्त करें , फिर अपनी पुरानी कॉन्फ़िग फ़ाइल/ऑब्जेक्ट को नई अपडेट की गई फ़ाइल/ऑब्जेक्ट से बदलें । कंसोल में कॉन्फिग ऑब्जेक्ट को डाउनलोड करने या प्रदर्शित करने के लिए एक कॉन्फिग फाइल भेजने से पहले, फायरबेस यह जांचता है कि एपीआई की (एस) सूचीबद्ध ऐप से मेल खाती है ।
आपके वेब ऐप द्वारा उपयोग की जाने वाली एपीआई कुंजी में शायद "एपीआई प्रतिबंध" लागू होता है। यदि ऐसा है, तो सुनिश्चित करें कि Firebase प्रबंधन API अनुमत API की सूची में है।
यदि आप किसी ऐप द्वारा उपयोग की जा रही एपीआई कुंजी को हटाते हैं, तो उस ऐप से एपीआई कॉल विफल हो जाएगी। आपको ऐसी रिपोर्टें, ईमेल या त्रुटियां मिल सकती हैं जिनके बारे में आप किसी अमान्य API कुंजी का उपयोग करने का प्रयास कर रहे हैं।
एपीआई कुंजी को हटाना स्थायी है और इसे पूर्ववत नहीं किया जा सकता है।