Um das Firebase Admin SDK mit Java zu verwenden, müssen Sie Firebase wie unten gezeigt initialisieren.
Initialisieren
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);
Das Problem hierbei ist, dass Sie die von der Firebase-Konsole heruntergeladene JSON-Datei laden müssen. Normalerweise werden vertrauliche Informationen als Umgebungsvariable übergeben, aber aus irgendeinem Grund ist eine JSON-Datei erforderlich, die vertrauliche Informationen beschreibt.
Zum Beispiel bei der Bereitstellung auf einem Server, der durch einen Push an GitHub mit Ci / CD usw. ausgelöst wird. Sie müssen diese JSON-Datei auch pushen. Selbst wenn das Repository privat ist, ist die Verwaltung gefährlich.
Wie der Titel schon sagt, zeige ich Ihnen, wie Sie Umgebungsvariablen festlegen, ohne eine Datei vorzubereiten.
Laden Sie die privaten Schlüsselinformationen des Dienstkontos von der Firebase-Konsole herunter.
Fügen Sie den folgenden Code zu launch.json hinzu. Informationen zum Einstellungswert finden Sie in der JSON-Datei mit Informationen zum privaten Schlüssel.
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>"
}
Sie können eine JSON-Datei programmgesteuert erstellen.
@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))) {
//Holen Sie sich aus Umgebungsvariablen und setzen
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"));
//Konvertieren Sie die Map in eine Zeichenfolge im Json-Format
String str = mapper.writeValueAsString(credentials);
//In Datei schreiben
pw.println(str);
}
FileInputStream serviceAccount = new FileInputStream(FIREBASE_CREDENTIALS_PATH);
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
//Initialisieren
FirebaseApp.initializeApp(options);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
Recommended Posts