ฉันควรเพิ่ม google-services.json (จาก Firebase) ลงในที่เก็บของฉันหรือไม่


101

ฉันเพิ่งลงทะเบียนกับ Firebase และฉันได้สร้างโครงการใหม่ Firebase ถามฉันเกี่ยวกับโดเมนแอปของฉันและคีย์การแก้ไขข้อบกพร่อง SHA1 ฉันป้อนรายละเอียดเหล่านี้และสร้างไฟล์ google-services.json ให้ฉันเพิ่มในรูทของโมดูลแอปของฉัน

คำถามของฉันคือควรเพิ่มไฟล์. json นี้ใน repo สาธารณะ (โอเพ่นซอร์ส) เป็นสิ่งที่ควรเป็นความลับเช่นคีย์ API หรือไม่?

คำตอบ:


94

google-services.jsonไฟล์, จาก doc Firebase :

Firebase จัดการการตั้งค่า API และข้อมูลรับรองทั้งหมดของคุณผ่านไฟล์การกำหนดค่าเดียว
ไฟล์นี้ตั้งชื่อgoogle-services.jsonบน Android และGoogleService-Info.plistบน iOS

ดูเหมือนว่าจะเหมาะสมที่จะเพิ่มลงใน a .gitignoreและไม่รวมไว้ใน repo สาธารณะ
สิ่งนี้ถูกกล่าวถึงในฉบับที่ 26พร้อมรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่google-services.jsonมี

โครงการเช่นgooglesamples/google-servicesมีอยู่ใน.gitignoreตัวอย่างเช่น
แม้ว่าตามความเห็นของstepheaw หัวข้อนี้จะกล่าวถึง

สำหรับไลบรารีหรือตัวอย่างโอเพนซอร์สเราจะไม่รวมไฟล์ JSON เนื่องจากเจตนาคือให้ผู้ใช้แทรกของตนเองเพื่อชี้โค้ดไปที่แบ็กเอนด์ของตนเอง
นั่นเป็นเหตุผลที่คุณจะไม่เห็นไฟล์ JSON ในที่เก็บ firebase ส่วนใหญ่ของเราบน GitHub

หาก "URL ฐานข้อมูลคีย์ Android API และที่เก็บข้อมูล" ไม่ใช่ความลับสำหรับคุณคุณอาจพิจารณาเพิ่มไฟล์ลงใน repo ของคุณ
ตามที่กล่าวไว้ใน " google-services.json ปลอดภัยจากแฮกเกอร์หรือไม่ " นี่ไม่ใช่เรื่องง่าย

bauericถามในความคิดเห็น :

ในโพสต์นั้นเขาพูดว่า:

ไฟล์ JSON ไม่มีข้อมูลที่ละเอียดอ่อนมาก (เช่นคีย์ API ของเซิร์ฟเวอร์)

แต่จะมีรายการที่เรียกว่าgoogle-services.json คีย์ API นั้นแตกต่างจาก " " หรือไม่api_key
server api key

Willie Chalmers IIIชี้ไปที่ " google-services.json ปลอดภัยจากแฮกเกอร์หรือไม่ " และเพิ่ม:

ใช่คีย์ API นั้นไม่ใช่คีย์ API ของเซิร์ฟเวอร์ซึ่งไม่ควรเปิดเผยต่อสาธารณะดังนั้นจึงเป็นการดีหากgoogle-services.jsonผู้อื่นมองเห็นของคุณ

ไม่ว่าในกรณีใดคุณควร จำกัด วิธีใช้คีย์ API ไคลเอ็นต์ของคุณในคอนโซล Google Cloud


11
นี่ไม่ถูกต้องจริงๆ วิศวกร Firebase บอกว่ามันโอเคที่จะตรวจสอบในการควบคุมแหล่งที่มา คำตอบของ @ Yaron ยืนอยู่
Willie Chalmers III

2
@WillieChalmersIII ตกลง. ฉันได้แก้ไขคำตอบตามนั้น
VonC

@WillieChalmersIII ในที่โพสต์เขาบอกว่า "แฟ้ม JSON ไม่ได้มีข้อมูลซุปเปอร์สำคัญใด ๆ (เช่นคีย์เซิร์ฟเวอร์ API)" แต่จะมีรายการที่เรียกว่าgoogle-services.json api_keyคีย์ API นั้นแตกต่างจาก "คีย์ API ของเซิร์ฟเวอร์" หรือไม่
baueric

1
@baueric ดูคำตอบนี้สำหรับข้อมูลเพิ่มเติม ใช่คีย์ API นั้นไม่ใช่คีย์ API ของเซิร์ฟเวอร์ซึ่งไม่ควรเปิดเผยต่อสาธารณะดังนั้นจึงเป็นการดีหากgoogle-services.jsonผู้อื่นมองเห็นของคุณ ไม่ว่าในกรณีใดคุณควร จำกัด วิธีใช้คีย์ API ไคลเอ็นต์ของคุณในคอนโซล Google Cloud
Willie Chalmers III

36

จากการสนทนานี้ดูเหมือนว่าคุณสามารถเพิ่มลงใน repo สาธารณะได้ เนื้อหาจะลงเอยด้วย APK และอาจแตกไฟล์ได้ง่าย


1
ฉันยอมรับและฉันกำลังแก้ไขปัญหานี้อยู่ในขณะนี้ มีวิธีเข้ารหัสคีย์ในไฟล์นั้นจากใครสักคนที่ถอดรหัส APK หรือไม่
stepheaw

13
แม้ว่าจะเป็นความจริงอย่างแน่นอนที่คีย์ API สามารถแยกออกจาก apk ได้อย่างง่ายดาย แต่คำถามก็คือว่าgoogle-services.jsonควรมุ่งมั่นที่จะควบคุมแหล่งที่มาในrepo โอเพ่นซอร์สสาธารณะหรือไม่ และในกรณีส่วนใหญ่คำตอบคือไม่ - เว้นแต่เจ้าของ repo ต้องการให้ทั้งโลกใช้โควต้า API บัญชี Google ของตนโดยค่าเริ่มต้น คำตอบของ @ VonC ย่อมาจาก
friederbluemle

2
hitraj47 ถามเกี่ยวกับการเพิ่มลงในที่เก็บสาธารณะ การสนทนานั้นไม่ได้กล่าวถึงที่เก็บสาธารณะและดูเหมือนว่าพวกเขากำลังพูดถึงที่เก็บส่วนตัว
Eugene
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.