Я делаю весеннее загрузочное приложение, которое будет использовать Firebase для отправки сообщения. Я знаю, что мне нужно установить переменную среды export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
, чтобы установить service-account.json
в качестве учетных данных.
Но есть ли способ установить учетные данные в коде Java без установки переменной среды?
Я бы хотел поместить файл service-account.json
в папку resource
и собрать в файл war.
Я использую весеннюю загрузку. Мой код для инициализации Firebase выглядит так:
FirebaseApp.initializeApp();
Но я получаю сообщение об ошибке:
Exception in thread "main" java.lang.IllegalStateException: java.io.IOException:
The Application Default Credentials are not available.
They are available if running in Google Compute Engine.
Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials.
See https://developers.google.com/accounts/docs/application-default-credentials for more information.
Я также пытался authExplicit
, описанный в https://developers.google.com/accounts/docs/application-default-credentials, но все же получить ту же ошибку
мой код:
public static void main(String[] args) {
try {
authExplicit();
} catch (Exception e) {
e.printStackTrace();
}
initGoogleSDK();
SpringApplication.run(AhsayPushNotificationServiceApplication.class, args);
}
private static void initGoogleSDK() {
if (FirebaseApp.getApps().isEmpty()) {
FirebaseApp.initializeApp();
}
}
static void authExplicit() throws IOException {
File accountJson = ResourceUtils.getFile("classpath:service-account.json");
// You can specify a credential file by providing a path to GoogleCredentials.
// Otherwise credentials are read from the GOOGLE_APPLICATION_CREDENTIALS environment variable.
GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(accountJson));
Storage storage = StorageOptions.newBuilder().setCredentials(credentials).build().getService();
}