У меня есть внешний интерфейс, который размещается через Firebase. Код использует аутентификацию Firebase и получает токен через user.getIdToken()
. Согласно ответам на подобные вопросы, это путь к go.
. Бэкэнд записывается в Python, ожидает токен и проверяет его с помощью firebase_admin SDK. На моей локальной машине я установил для FIREBASE_CONFIG
путь к firebase-auth.json
, который я экспортировал из своего проекта. Все работает как положено.
Теперь я развернул свой бэкэнд через Google AppEngine. Здесь я настраиваю FIREBASE_CONFIG
как строку JSON в app.yaml. Код выглядит следующим образом:
runtime: python37
env_variables:
FIREBASE_CONFIG: '{
"type": "service_account",
"project_id": "[firebase-project-name]",
...
Бэкэнд регистрирует значение FIREBASE_CONFIG
при запуске. В журналах я вижу строку JSON, а {
- первый символ. Так что все выглядит хорошо для меня. Но если я получаю токен от клиента и пытаюсь проверить его (тот же код, который работает локально), он получит эту ошибку:
У токена Firebase ID есть неверное утверждение "aud" (аудитория). Ожидается «[backend-appengine-project-name]», но получено «[firebase-project-name]». Удостоверьтесь, что ID-токен происходит из того же проекта Firebase, что и учетная запись службы, используемая для аутентификации этого SDK.
Может кто-нибудь объяснить, что мне не хватает и как его решить?