Pour utiliser le SDK Firebase Admin avec Java, vous devez initialiser Firebase comme indiqué ci-dessous.
Initialisation
FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
Le problème ici est que vous devez charger le fichier json téléchargé depuis la console Firebase. Normalement, les informations confidentielles sont transmises en tant que variable d'environnement, mais pour une raison quelconque, un fichier json décrivant des informations confidentielles est requis.
Par exemple, lors d'un déploiement sur un serveur déclenché par un push vers GitHub avec Ci / CD, etc. Vous devez également pousser ce fichier json. Même si le référentiel est privé, il est dangereux à gérer.
Ainsi, comme le titre l'indique, je vais vous montrer comment définir des variables d'environnement sans préparer de fichier.
Téléchargez les informations de clé privée du compte de service à partir de la console Firebase.
Ajoutez le code suivant à launch.json. Pour la valeur du paramètre, reportez-vous au fichier json des informations de clé privée.
launch.json
"env": {
"TYPE": "<type>",
"PROJECT_ID": "<project_id>",
"PRIVATE_KEY": "<private_key>",
"PRIVATE_KEY_ID": "<private_key_id>",
"CLIENT_EMAIL": "<client_email>",
"CLIENT_ID": "<client_id>",
"CLIENT_X509_CERT_URL": "<client_x509_cert_url>"
}
Vous pouvez créer un fichier json par programme.
@SpringBootApplication
public class DemoApplication {
private static final String FIREBASE_CREDENTIALS_PATH = "/path/to/credentials.json";
private static ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
try {
FileWriter fw = new FileWriter(FIREBASE_CREDENTIALS_PATH);
try (PrintWriter pw = new PrintWriter(new BufferedWriter(fw))) {
//Obtenir des variables d'environnement et définir
Map<String, String> credentials = new HashMap<>();
credentials.put("type", System.getenv("TYPE"));
credentials.put("project_id", System.getenv("PROJECT_ID"));
credentials.put("private_key_id", System.getenv("PRIVATE_KEY_ID"));
credentials.put("private_key", System.getenv("PRIVATE_KEY"));
credentials.put("client_email", System.getenv("CLIENT_EMAIL"));
credentials.put("client_id", System.getenv("CLIENT_ID"));
credentials.put("auth_uri", "https://accounts.google.com/o/oauth2/auth");
credentials.put("token_uri", "https://oauth2.googleapis.com/token");
credentials.put("auth_provider_x509_cert_url", "https://www.googleapis.com/oauth2/v1/certs");
credentials.put("client_x509_cert_url", System.getenv("CLIENT_X509_CERT_URL"));
//Convertir la carte en chaîne de format Json
String str = mapper.writeValueAsString(credentials);
//Écrire dans un fichier
pw.println(str);
}
FileInputStream serviceAccount = new FileInputStream(FIREBASE_CREDENTIALS_PATH);
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
//Initialisation
FirebaseApp.initializeApp(options);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Recommended Posts