Verwenden Sie diese Option, ohne eine Authentifizierungsdatei vorzubereiten, wenn Sie das Firebase Admin SDK in Java verwenden

Einführung

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.

Betriebsumgebung

Vorbereitung

Laden Sie die privaten Schlüsselinformationen des Dienstkontos von der Firebase-Konsole herunter.

スクリーンショット_2019-03-26_23_20_11.png

Verfahren

Umgebungsvariablen einstellen

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>"
}

Implementierung

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

Verwenden Sie diese Option, ohne eine Authentifizierungsdatei vorzubereiten, wenn Sie das Firebase Admin SDK in Java verwenden
Map ohne Verwendung eines Arrays in Java
Beim Aufrufen von println usw. aus einer externen Java-Klassendatei in Processing
Zusammenfassung beim Versuch, Solr in Java zu verwenden und eine Fehlermeldung zu erhalten (Solr 6.x)
Bei Verwendung einer Liste in Java wird java.awt.List ausgegeben und ein Fehler tritt auf
[Java] Erstellen einer Excel-Datei mit Apache POI
Ich habe versucht, die erweiterte for-Anweisung in Java zu verwenden
Unterschiede im Code bei Verwendung des Längensystems in Java
Ich möchte Java Applet einfach in der Befehlszeile verwenden, ohne IDE zu verwenden
Verwenden Sie OpenCV mit Java
Verwenden Sie PreparedStatement in Java
Verwenden Sie Java Web Start in einer OpenJDK-Umgebung unter Windows
Dinge, die Sie häufig bei der Webentwicklung mit Java verwenden
Ruft Attribute und Werte aus einer XML-Datei in Java ab
Zugriff auf den S3-Bucket mithilfe der SSE-KMS-Verschlüsselung in der EC2-IAM-Rollenumgebung (AWS SDK für Java)