Клиентская аутентификация AppEngine API перестала работать после обновления
У меня есть бэкэнд движка приложений Java с веб-клиентом и клиентом Android. Клиент Android использует сгенерированную клиентскую библиотеку, а веб-сайт - клиентскую библиотеку JavaScript для конечных точек.
У нас есть 3 среды для движка приложений: Dev, Staging и Production. Я уже отправил обновление в dev, и оно работает над приложением и сайтом.
Теперь я обновил бэкэнд в среде Staging и у меня много проблем с аутентификацией. Ничего не изменилось в аутентификации или подписи приложения, поэтому я не понимаю, что это может быть.
Клиент сайта
Веб-сайт использует G+ login и после вызова метода API пользовательского ядра приложения выдает следующую ошибку:
"Access Not Configured. has not been used in project 986034197583 before or it is disabled. Enable it by visiting [url] then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."
Открытие #restDescription прошло успешно и показывает методы.
Android-клиент
Приложение Android также использует G+ login и выдает следующие ошибки (в журнале Google Cloud Console):
com.google.api.server.spi.auth.GoogleJwtAuthenticator authenticate: ClientId is not allowed: 986034197583-51qasim2gmqql5vc652vk3u3lpapegb6.apps.googleusercontent.com
Приложение не подписано с другим хранилищем ключей, и хэш SHA-1 такой же (я проверял это).
Учетные данные API Manager
Учетные данные в диспетчере API остались прежними и не должны изменяться. Я проверил их все, и они выглядят правильно. Это не имеет смысла для меня, если у Google нет какой-то глупой ошибки или чего-то еще сегодня.
APIs Explorer
Когда я тестирую API с помощью Проводника API, он работает. (Apis-explorer.appspot.com)
Похоже, учетные данные API больше не связаны с моим API. Мне кажется странным, что вы нигде не можете включить или отключить свои собственные API (только Google). Ссылка в ошибке для активации API не работает, потому что это ссылка, как будто это Google API.
1 ответ
Оказывается, что-то не так с конфигурацией сервера. Я только заменяю appengine-web.xml промежуточной конфигурацией. Но я не изменил clientID и weblientId бэкэнда, потому что они находятся в файле с именем Constants.java, где я должен вручную установить, если это бэкэнд DEV, STAGING или PRODUCTION (aarggh). Это все еще было отмечено как DEV.
Нам действительно нужен buildscript для этого бэкэнда, чтобы предотвратить подобные ситуации. Потому что я разработчик Android, я знаю только Gradle. Этот проект был разработан Java-разработчиком, который покинул компанию, и теперь я должен поддерживать это. Он использует Maven, поэтому я не знаю, как сделать разные цели сборки, как в Android Studio, где используются разные константы.
Может быть, кто-то здесь знает, как я могу создать симулированное решение, например, ароматы в Gradle и сгенерировать константы BuildConfig.java. Это было бы прекрасно.
Редактировать Я сейчас создаю профили maven, теперь в сочетании с плагином maven-war я могу создавать разные профили для разных типов сборки. Это можно использовать для различных appengine-web.xml. См. Конфигурацию web.xml, основанную на профиле Maven. Я сейчас все еще пытаюсь найти что-то, чтобы включить константы для ANDROID_CLIENT_ID и WEB_CLIENT_ID в сценарий сборки. Я не могу загрузить их из файла, потому что они должны быть константами, потому что они используются в атрибутах для API. Я создаю Contstants.java с помощью http://www.mojohaus.org/templating-maven-plugin/. Единственная вещь, которую я не могу заставить работать, - это то, что она не генерирует автоматический вызов при переключении профиля. Я все еще должен вручную начать шаблонизацию: фильтр-источники.