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