Ошибка Google Api и android Oauth INVALID_AUDIENCE

Я получаю GoogleAuthException: Unknown error, делая GoogleAuthUtil.getToken.

Как раз перед исключением я вижу

GLSUser: GLS error: INVALID_AUDIENCE <email> audience:server:client_id:xxx.apps.googleusercontent.com

Я установил SHA1 из моего ключа release, имя пакета, в проект google api. (Что, кстати, успешно используется для GCM.)

Ответы

Ответ 1

Похоже, это должно сработать; здесь код-init-init из моего приложения, который работает.

private static final String SCOPE = "audience:server:client_id:" + SERVER_CLIENT_ID;

Так что мне пахнет, как проблема с идентификатором клиента. Помните, что

  • У вас должен быть проект с двумя идентификаторами клиентов
  • Один из них подходит для вашего приложения для Android, с SHA и пакетом и т.д.
  • Другое для серверной стороны, что вы собираетесь отправить токен на

Идентификатор клиента от # 3, который идет после...: client_id:

Ответ 2

Случилось одно в моей команде, хотя на моем устройстве все нормально работало. Это оказалось из-за другого debug.keystore на наших установках затмения.

Чтобы решить проблему, мы скопировали файл debug.keystore компании ~/.android/ (это каталог на mac, он отличается от linux и windows)

Ответ 3

Решите это, удалив ваш debug.keystore, найденный в вашей папке .android, затем снова запустите новый проект, чтобы создать новый файл debug.keystore. Затем, наконец, создайте новый сертификат подписи SHA-1 для Google API.

Ответ 4

Также вам нужно настроить экран авторизации oAuth в консоли Google API.

Вот почему я получил эту ошибку

Ответ 5

В целях документирования моей проблемы

У меня была такая же ошибка INVALID_AUDIENCE, что и при входе в Google через приложение AWS Mobile Hub. Несколько вещей, чтобы проверить,

Подобно тому, как Тим Брей замечает, что вы делаете свой идентификатор клиента действительным идентификатором веб-клиента (а не Android). Но также имеет идентификатор клиента Android, который имеет как надлежащий SHA-1 Fingerprint (найденный в debug.keystore, который Android Studio использует для подписи сборки отладки при нажатии кнопки "Выполнить" ) и имени пакета.

ПРИМЕЧАНИЕ. Имя пакета, указанное в AndroidManifest.xml, не всегда является фактическим именем пакета. Чтобы найти окончательное имя пакета, перейдите в файл build.gradle и посмотрите поле applicationId. Обязательно введите правильное имя пакета в Консоль разработчика при настройке идентификатора клиента Android.