0

Я следил за учебным пособием HelloEndpoints от от Google, где я реализовал интерфейс API на Java и клиент Android, откуда я получаю эту ошибку. https://cloud.google.com/appengine/docs/java/endpoints/getstarted/clients/android/Почему я получаю INVALID_AUDIENCE с использованием конечных точек Google?

Я развернул клиент приложения Android на физическом устройстве. Когда я запускаю приложение и прикасаюсь к кнопке «Войти», отображается диалог, так как у меня есть две учетные записи Google на телефоне. Я выбираю один, а затем правильный адрес электронной почты отображается в течение нескольких секунд на ярлыке, прежде чем он исчезнет. Затем я получаю ошибку аутентификации.

Несколько предлагаемых решений упомянуты в Stackoverflow и других сайтах, но ничего, что я пробовал до сих пор, не помогло.

Я попытался:

  • Регенерация клиент-идентификатор, они такие же, как на клиент- и на стороне сервера (идентификатор клиента веб)
  • андроид идентификатор имеет правильное имя пакета на конец SHA1
  • регенерировать клиент ЛИЭС
  • Update devserver (но API также развернутые)
  • Shutdown на веб-службы из консоли разработчика Google
  • Я установил имя проекта и адрес электронной почты на так называемом Согласие экрана на консоли API.
  • Проверено, что я подписываю приложение с тем же самым debug.keystore, что и при создании SHA1. Он используется, когда я создаю выпуск.

С наилучшими пожеланиями, Рамон

ответ

1

я, наконец, решить эту проблему вчера :)

на Google Developer Console, я понял, что я имел Android ключ для доступа Public API, но не Android ID клиента для OAuth. Единственный идентификатор клиента для OAuth был для веб-приложений.

После того, как я создал приложение для Android, исключение аутентификации исчезло.

После этого я получил еще одно исключение, когда попытался вызвать метод, требующий аутентификации. Когда я проверил журнал в Google Developer Console, вызов даже не был зарегистрирован! Это заставило меня подумать, что вызов метода неверен.

Когда я пытался использовать метод из Интернета, он работал. Затем я проверил свой терминал, и там я увидел почтовый адрес example[email protected] Таким образом, вызов из Android-клиента был отправлен на мой локальный devserver, хотя у меня была развернута веб-служба (а ip-адрес серверов не был установлен в коде Android). Мой следующий шаг состоял в том, чтобы закрыть локальный devserver, а затем я повторно развернул backend API, прежде чем снова протестировал клиент Android.

Наконец, после этих двух изменений, которые я могу вызвать метод аутентификации и получить правильный ответ :)

+0

братан может у Просьбы помочь, я все сказало выше у, но я получаю этот error.Do Мне нужно добавить идентификатор клиента, область действия, аудитория для метода api? Я добавил их в @Api (..), где аудиторией является мой идентификатор веб-клиента. Когда я вызываю метод api, я получаю ошибку. – Tanvir

+0

В консоли разработчика Google | API и аут | Согласие экрана, вы проверили, что вы набрали адрес электронной почты и имя Procuct? – Ramon