Apakah saya harus menambahkan google-services.json (dari Firebase) ke repositori saya?

104

Saya baru saja mendaftar dengan Firebase dan saya membuat proyek baru. Firebase meminta domain aplikasi saya dan kunci debug SHA1. Saya memasukkan detail ini dan itu menghasilkan file google-services.json untuk saya tambahkan ke root modul aplikasi saya.

Pertanyaan saya adalah, apakah file .json ini harus ditambahkan ke repo publik (open source). Apakah itu sesuatu yang harus dirahasiakan, seperti kunci API?

hitraj47
sumber

Jawaban:

98

Sebuah google-services.jsonfile, dari doc Firebase :

Firebase mengelola semua setelan dan kredensial API Anda melalui satu file konfigurasi.
File ini diberi nama google-services.jsondi Android dan GoogleService-Info.plistdi iOS.

Tampaknya masuk akal untuk menambahkannya ke a .gitignoredan tidak memasukkannya ke dalam repo publik.
Ini telah dibahas dalam edisi 26 , dengan lebih detail tentang apa yang google-services.jsonterkandung

Sebuah proyek seperti googlesamples/google-servicestidak memilikinya di nya.gitignore misalnya.
Meskipun, seperti yang dikomentari oleh stepheaw , utas ini memang menyebutkan

Untuk sampel pustaka atau sumber terbuka, kami tidak menyertakan file JSON karena tujuannya adalah agar pengguna memasukkan milik mereka sendiri untuk mengarahkan kode ke backend mereka sendiri.
Itulah mengapa Anda tidak akan melihat file JSON di sebagian besar repositori firebase kami di GitHub.

Jika "URL database, kunci Android API, dan keranjang penyimpanan" tidak dirahasiakan untuk Anda, Anda dapat mempertimbangkan untuk menambahkan file tersebut ke repo.
Seperti yang disebutkan dalam " Apakah google-services.json aman dari peretas? ", Ini tidak sesederhana itu.

baueric bertanya di komentar :

Dalam postingan itu dia berkata:

File JSON tidak berisi informasi super-sensitif (seperti kunci API server)

Tapi google-services.jsonmemang ada entri yang disebut api_key.
Apakah itu kunci api yang berbeda dari " server api key"?

Willie Chalmers III menunjuk ke " Apakah google-services.json aman dari peretas? ", Dan menambahkan:

Ya, kunci API tersebut bukanlah kunci API server yang tidak boleh publik, jadi tidak masalah jika Anda google-services.jsonterlihat oleh orang lain.

Bagaimanapun, Anda harus tetap membatasi bagaimana kunci API klien Anda dapat digunakan di konsol Google Cloud.

VonC
sumber
11
Ini sebenarnya tidak benar; seorang insinyur Firebase mengatakan tidak apa - apa untuk memeriksa kontrol sumber. @ Jawaban Yaron berdiri.
Willie Chalmers III
2
@WillCenterIII OKE. Saya telah mengubah jawabannya.
VonC
@WillieChalmersIII Dalam posting itu dia mengatakan "File JSON tidak berisi informasi super-sensitif (seperti kunci API server)" tetapi google-services.jsonmemang memiliki entri yang dipanggil api_key. Apakah itu kunci api yang berbeda dari "kunci api server"?
baueric
1
@baueric Lihat jawaban ini untuk info lebih lanjut. Ya, kunci API tersebut bukanlah kunci API server yang tidak boleh publik, jadi tidak masalah jika Anda google-services.jsonterlihat oleh orang lain. Bagaimanapun, Anda harus tetap membatasi bagaimana kunci API klien Anda dapat digunakan di konsol Google Cloud.
Willie Chalmers III
37

Dari ini pembahasan tampaknya Anda dapat menambahkannya ke repo publik. Kontennya tetap ada di APK dan mungkin mudah diekstrak.

Yaron
sumber
1
Saya setuju, dan saya sedang menangani masalah ini sekarang. Apakah ada cara untuk mengenkripsi kunci dalam file itu dari seseorang yang mendekompilasi APK?
stepheaw
13
Meskipun benar bahwa kunci API dapat dengan mudah diekstrak dari apk, pertanyaannya adalah apakah google-services.jsonharus berkomitmen pada kontrol sumber dalam repo open source publik . Dan dalam sebagian besar kasus, jawabannya pasti TIDAK - kecuali jika pemilik repo ingin seluruh dunia menggunakan kuota API akun Google mereka secara default. @ Jawaban VonC berdiri.
friederbluemle
2
hitraj47 bertanya tentang menambahkannya ke repositori publik . Diskusi itu tidak menyebutkan repositori publik, dan tampaknya membahas repositori pribadi.
Eugene