À utiliser sans préparer de fichier d'authentification lors de l'utilisation du SDK Firebase Admin dans Java

introduction

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.

Environnement d'exploitation

Préparation

Téléchargez les informations de clé privée du compte de service à partir de la console Firebase.

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

procédure

Définition des variables d'environnement

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

la mise en oeuvre

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

À utiliser sans préparer de fichier d'authentification lors de l'utilisation du SDK Firebase Admin dans Java
Mapper sans utiliser de tableau en java
Lors de l'appel de println etc. à partir d'un fichier de classe Java externe en traitement
Résumé en essayant d'utiliser Solr en Java et en obtenant une erreur (Solr 6.x)
Lors de l'utilisation d'une liste en Java, java.awt.List sort et une erreur se produit
[Java] Création d'un fichier Excel à l'aide d'Apache POI
J'ai essayé d'utiliser l'instruction Extended for en Java
Différences de code lors de l'utilisation du système de longueur en Java
Je souhaite utiliser l'applet Java facilement sur la ligne de commande sans utiliser l'IDE
Utiliser OpenCV avec Java
Utiliser PreparedStatement en Java
Utiliser Java Web Start dans un environnement OpenJDK sous Windows
Ce que vous utilisez souvent lorsque vous faites du développement Web avec Java
Obtenir des attributs et des valeurs à partir d'un fichier XML en Java
Accéder au compartiment S3 à l'aide du chiffrement SSE-KMS dans l'environnement de rôle IAM EC2 (AWS SDK pour Java)