क्या मुझे अपनी रिपॉजिटरी में google-services.json (Firebase से) जोड़ना चाहिए?


100

मैंने सिर्फ फायरबेस के साथ साइन अप किया और मैंने एक नया प्रोजेक्ट बनाया। फायरबेस ने मुझसे मेरा ऐप डोमेन और SHA1 डीबग कुंजी मांगी। मैं इन विवरणों को इनपुट करता हूं और इसने मेरे ऐप मॉड्यूल की जड़ में जोड़ने के लिए एक google-services.json फ़ाइल तैयार की है।

मेरा सवाल यह है कि क्या .json फ़ाइल को किसी सार्वजनिक (ओपन सोर्स) रेपो में जोड़ा जाना चाहिए। क्या यह कुछ ऐसा है जो एपीआई कुंजी की तरह गुप्त होना चाहिए?

जवाबों:


94

एक google-services.jsonफ़ाइल फायरबेस डॉक से है :

Firebase आपके सभी API सेटिंग्स और क्रेडेंशियल्स को एक एकल कॉन्फ़िगरेशन फ़ाइल के माध्यम से प्रबंधित करता है।
फ़ाइल को google-services.jsonAndroid GoogleService-Info.plistपर और iOS पर नाम दिया गया है ।

यह एक में जोड़ने के लिए समझ में आता है .gitignoreऔर इसे सार्वजनिक रेपो में शामिल नहीं करता है।
इसमें 26 पर चर्चा की गई थी , जिसमें अधिक विवरण google-services.jsonशामिल हैं।

एक परियोजना की तरह googlesamples/google-servicesयह अपने.gitignore उदाहरण के लिए है।
हालाँकि, जैसा कि stepheaw द्वारा टिप्पणी की गई है , इस धागे का उल्लेख है

एक पुस्तकालय या ओपन-सोर्स नमूने के लिए हम JSON फ़ाइल को शामिल नहीं करते हैं क्योंकि इरादा यह है कि उपयोगकर्ता अपने स्वयं के बैकएंड पर कोड को इंगित करने के लिए अपना खुद का सम्मिलित करते हैं।
यही कारण है कि आप GitHub पर हमारे अधिकांश फायरबेस रेपो में JSON फ़ाइलों को नहीं देखेंगे।

यदि "डेटाबेस URL, एंड्रॉइड एपीआई कुंजी, और स्टोरेज बाल्टी" आपके लिए गुप्त नहीं है, तो आप फ़ाइल को अपने रेपो में जोड़ने पर विचार कर सकते हैं।
जैसा कि " क्या google-services.json हैकर्स से सुरक्षित है? " में उल्लेख किया गया है , हालांकि यह इतना आसान नहीं है।

बाउरी टिप्पणी में पूछता है :

उस पोस्ट में वे कहते हैं:

JSON फ़ाइल में कोई सुपर-संवेदनशील जानकारी नहीं है (जैसे सर्वर API कुंजी)

लेकिन google-services.jsonक्या एंट्री को कॉल किया जाता है api_key
क्या यह एक " server api key" की तुलना में एक अलग एपीआई कुंजी है ?

विली चाल्मर्स III " हैकर्स से सुरक्षित Google- services.json? " और कहते हैं:

हां, वह API कुंजी एक सर्वर API कुंजी नहीं है जो कभी भी सार्वजनिक नहीं होनी चाहिए, इसलिए यदि आपका google-services.jsonअन्य लोगों द्वारा दिखाई दे तो यह ठीक है।

किसी भी स्थिति में, आपको अभी भी प्रतिबंधित करना चाहिए कि Google क्लाउड कंसोल में आपकी क्लाइंट API कुंजी का उपयोग कैसे किया जा सकता है।


10
यह वास्तव में सही नहीं है; फायरबेस इंजीनियर ने कहा कि सोर्स कंट्रोल में जांच करना ठीक है। @ यारोन का जवाब खड़ा है।
विली चाल्मर्स III

2
@WillieChalmersIII ठीक है। मैंने तदनुसार उत्तर में संशोधन किया है।
VonC

@WillieChalmersIII उस पोस्ट में वे कहते हैं, "JSON फ़ाइल में कोई सुपर-सेंसिटिव जानकारी (जैसे सर्वर API कुंजी)" नहीं है, लेकिन google-services.jsonइसमें प्रविष्टि कहा जाता है api_key। क्या यह एक "सर्वर एपीआई कुंजी" की तुलना में एक अलग एपीआई कुंजी है?
बाउरी

1
@baueric अधिक जानकारी के लिए यह उत्तर देखें । हां, वह API कुंजी सर्वर API कुंजी नहीं है, जो कभी भी सार्वजनिक नहीं होनी चाहिए, इसलिए यदि आपका google-services.jsonअन्य लोगों द्वारा दिखाई दे तो यह ठीक है। किसी भी स्थिति में, आपको अभी भी प्रतिबंधित करना चाहिए कि Google क्लाउड कंसोल में आपकी क्लाइंट API कुंजी का उपयोग कैसे किया जा सकता है।
विली चाल्मर्स III

36

से इस चर्चा यह आप एक सार्वजनिक रेपो में जोड़ सकते हैं लगता है। इसकी सामग्री वैसे भी एपीके में समाप्त हो जाती है और संभवतः निकालना आसान है।


1
मैं सहमत हूं, और मैं अभी इस मुद्दे पर काम कर रहा हूं। क्या एपीके को डिकम्पोज करने वाले किसी व्यक्ति से उस फ़ाइल में कुंजियों को एन्क्रिप्ट करने का कोई तरीका है?
stepheaw

13
हालांकि यह निश्चित रूप से सच है कि एपीआई कुंजियों को आसानी से एपीके से निकाला जा सकता है, यह सवाल था कि सार्वजनिक खुले स्रोत रेपोgoogle-services.json में स्रोत नियंत्रण के लिए प्रतिबद्ध होना चाहिए या नहीं । और अधिकांश मामलों में जवाब निश्चित रूप से नहीं है - जब तक कि रेपो मालिक नहीं चाहता कि पूरी दुनिया डिफ़ॉल्ट रूप से अपने Google खाता एपीआई कोटा का उपयोग करे। @ VonC का जवाब खड़ा है।
फ्राइडेरब्लुमेले

2
Hitraj47 ने इसे सार्वजनिक भंडार में जोड़ने के बारे में पूछा । उस चर्चा में सार्वजनिक रिपॉजिटरी का उल्लेख नहीं है, और वे एक निजी रिपॉजिटरी पर चर्चा करते दिखते हैं।
यूजीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.