Firebase_auth/custom-token-mismatch Пользовательский токен соответствует другой аудитории

У меня есть приложение Flutter в производстве со многими пользователями, использующими Firebase Backend. Я хочу добавить к нему аутентификацию Firebase, создав собственный токен с помощью облачной функции Google.

Я создал еще один проект Firebase в качестве среды разработки, внедрил и протестировал аутентификацию Firebase через облачную функцию NodeJS, все отлично, и теперь я развернул облачную функцию в рабочей среде.

Я не использую ключи API Google API в NodeJS, поскольку все облачные функции автоматически аутентифицируются в GCP. Во Flutter я заменил среду разработки google-services.json на правильную в продакшене. У меня нет GoogleService-Info, тестирую на Android.

В main.dart я инициализирую свое приложение следующим образом

  if (Firebase.apps.isEmpty) {
    try {
      await Firebase.initializeApp(
        name: "foo",
        options: DefaultFirebaseOptions.currentPlatform,
      );
    } catch (e) {
      print("could not initialize firebase ${e}");
    }
  }

options: DefaultFirebaseOptions.currentPlatform, это файл, сгенерированный FlutterFire CLI, он содержит учетные данные производственного приложения, это единственный файл, который я забыл изменить, когда проводил тестирование среды разработки, я забыл создать новые приложения для разработки и изменить значения в firebase_options.dart

Теперь происходит то, что облачная функция правильно генерирует токен, но всякий раз, когда я пытаюсь войти с помощью этого токена во Flutter

await FirebaseAuth.instance.signInWithCustomToken(firebase_token);

я получаю эту ошибку

flutter (14645): Authentication error [firebase_auth/custom-token- 
mismatch] The custom token corresponds to a different audience.

Как исправить эту ошибку? Я не могу просто создавать новые приложения Firebase, если это основная причина ошибки, по двум причинам.

  1. Я не могу удалить существующее, потому что существующие пользователи не смогут использовать приложение

  2. Я не могу создавать новые приложения, потому что требуется имя пакета Android, которое используется существующими приложениями.

Поэтому я хочу решение, которое не требует беспокойства существующих пользователей, если это возможно.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема решена запуском Flutter clean и Flutter pub get.

Оказывается, Flutter кэширует учетную запись службы Google между сборками. Удаление приложения и очистка кеша приложения не помогает, это Flutter кэширует файл на ПК.

Я отвечаю на свой вопрос, а не удаляю этот пост, потому что этот ответ может помочь будущим пользователям. В других ответах на эту тему говорится о создании нового приложения, создании нового ключа или чего-то еще.

Если вы столкнулись с этой ошибкой, и у вас ничего не работает, то просто очистите кеш на вашем ПК.

Другие вопросы по теме