Приложение Google Sign-in для Android в нескольких серверных средах?

У нас есть несколько серверных сред (например, разработка, постановка, выпуск), каждая из которых представляет собой отдельный проект в консоли разработчика Google, и мы хотим иметь возможность входить в любую из них из нашего приложения для Android в целях тестирования.

У меня есть вход в Google для одной из работающих сред (следуя руководству здесь), но когда я пытаюсь включить другие здесь, я получаю следующая ошибка:

The SHA-1 you specified is already used with the same package name for a different Android OAuth2 client.

Похоже, нам не разрешено включать в Google вход для одного и того же хэша сертификата имени пакета / подписи с несколькими проектами. Итак, как я могу включить вход в Google для нашего приложения для каждой из наших серверных сред? Это можно обойти?


person Patricia Li    schedule 04.03.2016    source источник


Ответы (3)


Это кажется невозможным, как указано; как говорится в сообщении об ошибке, вы можете включить вход в Google только для одного серверного проекта для каждой комбинации хэш сертификата подписи / имени пакета. В итоге я создал несколько applicationIds (http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename) для разных productFlavors (по одному для каждой конечной точки).

person Patricia Li    schedule 09.03.2016
comment
Это означает, что у вас есть несколько приложений в игровом магазине. У меня только одно приложение, и мне нужно войти в 3 разных проекта Firebase, но я не могу, потому что Google позволяет иметь только один отпечаток пальца. Как я могу это решить? - person Herno; 24.07.2017

В рамках одного проекта консоли разработчика вы можете добавить несколько клиентов OAuth 2.0, например.

  1. несколько экземпляров вашего веб-сервера (если вы не хотите делиться идентификатором клиента и секретом)
  2. несколько клиентов Android (каждый клиент Android однозначно идентифицируется именем пакета + хеш SHA1 сертификата подписи. И это что-то глобальное. имя пакета + сертификат подписи не является секретом для других людей. Вы не хотите, чтобы другие подделывали ваш клиент Android и получали те же токены OAuth. Таким образом, Google не разрешит вторую запись в другом проекте консоли разработчика)
person Isabella Chen    schedule 13.03.2016

У вас есть несколько вариантов решения этой проблемы.

Вы можете использовать разные сертификаты, чтобы подписывать приложения для разных сред, а также создавать разные проекты для каждой среды.

Другой вариант - использовать разные имена пакетов для каждой среды, например. com.mycompany.myapp.dev com.mycompany.myapp.staging и com.mycompany.myapp (для производства)

У вас может быть только один идентификатор клиента с одинаковой комбинацией имени пакета и хэша сертификата.

person nvnagr    schedule 07.03.2016