Ошибка 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.)

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

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

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

  1. У вас должен быть проект с двумя идентификаторами клиентов
  2. Один из них – для вашего приложения для Android, с SHA & package & so on
  3. Другое для серверной стороны, что вы собираетесь отправить токен

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

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

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

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

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

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

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

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

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

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