Ошибка в Firebase Admin SDK для FirebaseApp.initializeApp ();когда файл WAR развернут в GoogleCloudPlatform - PullRequest
0 голосов
/ 13 июня 2019

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.
...