GoogleCredentials недоступен для FirebaseApp.initializeApp () с параметром по умолчанию или filePath или ComputeEngineCredentials.create () на «Google Cloud Platform», и это прекрасно работает на «localhost».
Добавлена зависимость для администратора Firebase:
implementation 'com.google.firebase:firebase-admin:6.8.1'
Файл JSON учетной записи службы, который был загружен с
Firebase Console -> Project -> Settings -> Service Account -> Firebase Admin SDK -> File.
Для инициализации FirebaseApp нам нужно указать путь к этому файлу для учетных данных Google. Показано ниже с помощью // localhost
"Это прекрасно работает при работе на локальном хосте."
Проблема возникает при сборке WAR и развертывании на GCP.
Как указано здесь . Я добавил переменную пути к классу, выполнив это -
экспорт GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json
и изменил FirebaseOption, как показано ниже с
// GoogleCloudPlatform
Также опробовал учетные данные Google с приведенным ниже фрагментом.
Это все, что я инициализирую, как показано ниже в // Spring
Так что на GCP, когда я пытаюсь подписаться на тему, как показано ниже // тема
Я получаю ОШИБКУ, как показано ниже в разделе ошибок.
GCP не может использовать какой-либо относительный / абсолютный путь (пробовал оба) и не может выбрать файл пути к классам.
Так есть ли проблемы с GCP?
Заранее спасибо.
//localhost (initializeFirebase())
FileInputStream serviceAccount = new FileInputStream(ResourceUtils.getFile("classpath:filename"));
```FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
FirebaseApp.initializeApp(options);
//GoogleCloudPlatform
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.build();
FirebaseApp.initializeApp(options);
//GoogleCredentials Tried
GoogleCredentials credentials = ServiceAccountCredentials.getApplicationDefault();
//GoogleCredentials Tried
GoogleCredentials credentials = ComputeEngineCredentials.create();
//Spring
public class TestApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
try {
initializeFirebase();
} catch (IOException e) {
e.printStackTrace();
}
SpringApplication.run(TestApplication, args);
}
}
//Topic
FirebaseMessaging.getInstance().subscribeToTopic(
registrationTokens, topic);
ERROR: java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.