Следует ли мне добавить google-services.json (из Firebase) в свой репозиторий?

101

Я только что зарегистрировался в Firebase и создал новый проект. Firebase попросила меня указать домен моего приложения и ключ отладки SHA1. Я ввожу эти данные, и он сгенерировал файл google-services.json, который я мог добавить в корень моего модуля приложения.

У меня вопрос, следует ли добавить этот файл .json в общедоступное (с открытым исходным кодом) репо. Это что-то, что должно быть секретным, например, ключ API?

Hitraj47
источник

Ответы:

94

google-services.jsonФайл, из дока Firebase :

Firebase управляет всеми вашими настройками API и учетными данными через один файл конфигурации.
Файл называется google-services.jsonна Android и GoogleService-Info.plistiOS.

Кажется, имеет смысл добавить его в a, .gitignoreа не включать в публичное репо.
Это обсуждалось в выпуске 26 с более подробной информацией о том, что google-services.jsonсодержит.

Проект , как googlesamples/google-servicesимеет это в его.gitignore , например.
Хотя, как заметил по stepheaw , эта нить делает упоминание

Для библиотеки или образца с открытым исходным кодом мы не включаем файл JSON, потому что намерение состоит в том, чтобы пользователи вставляли свой собственный, чтобы указать код на свой собственный сервер.
Вот почему вы не увидите файлы JSON в большинстве наших репозиториев firebase на GitHub.

Если «URL-адрес базы данных, ключ Android API и сегмент хранилища» для вас не секрет, вы можете рассмотреть возможность добавления файла в репозиторий.
Как упоминалось в разделе « Безопасен ли google-services.json от хакеров? », Это не так просто.

baueric спрашивает в комментариях :

В этом посте он говорит:

Файл JSON не содержит сверхсекретной информации (например, ключа API сервера).

Но google-services.jsonесть запись api_key.
Это другой ключ api, чем " server api key"?

Вилли Чалмерс III указывает на вопрос « Безопасен ли google-services.json от хакеров? » И добавляет:

Да, этот ключ API не является ключом API сервера, который никогда не должен быть общедоступным, поэтому ничего страшного, если google-services.jsonон виден другим.

В любом случае вам все равно следует ограничить использование ключа клиентского API в консоли Google Cloud.

VonC
источник
11
На самом деле это не так; инженер Firebase сказал , что это нормально , чтобы проверить в системе управления версиями. @ Ярон отвечает.
Уилли Чалмерс 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.
Уилли Чалмерс III,
36

Из этого обсуждения кажется, что вы можете добавить его в публичное репо. Его содержимое все равно попадает в APK, и его, вероятно, легко извлечь.

Ярон
источник
1
Я согласен, и я работаю над этим вопросом прямо сейчас. Есть ли способ зашифровать ключи в этом файле у кого-нибудь, кто декомпилирует APK?
stepheaw
13
Хотя, безусловно, верно, что ключи API можно легко извлечь из apk, вопрос заключался в том, google-services.jsonследует ли использовать систему контроля версий в общедоступном репозитории с открытым исходным кодом . И в подавляющем большинстве случаев ответ определенно НЕТ - если только владелец репо не хочет, чтобы весь мир по умолчанию использовал квоту API учетной записи Google. Ответ @VonC стоит.
Friederbluemle
2
hitraj47 спросил о добавлении его в публичный репозиторий. В этом обсуждении не упоминаются публичные репозитории, и, похоже, они обсуждают частный репозиторий.
Евгений