Ich verwende Firebase, um die Authentifizierung in einer Java-Webanwendung mit Spring Boot und Thymeleaf zu verarbeiten. Ich habe Google nur angemeldet.Firebase lädt Anmeldeinformationen nicht in Java
Am Front-End habe ich es geschafft, dass Firebase korrekt funktioniert und den Benutzer authentifiziert. Also ist das Front-End in Ordnung.
Wenn es um die Validierung des Tokens im Back-End geht, versuche ich Firebase Admin SDK zu verwenden, wie in der Dokumentation empfohlen.
https://firebase.google.com/docs/admin/setup
ich die neueste Version bisher verwenden.
compile('com.google.firebase:firebase-admin:4.1.1')
I Firebase in der Back-End-bin Initialisierung zu überprüfen, um dann die Google-Token ich in dem Front-End bekam Javascript verwenden, und dass ich vorbei an das Back-End in einer POST-Anfrage.
https://firebase.google.com/docs/auth/admin/verify-id-tokens
Das Problem ist, dass Firebase nicht die Anmeldeinformationen zu laden scheint von der Credentials-Datei, die Sie für Ihre Anwendung zum Download haben (wie die Credentials-Datei zu erhalten, ist in dem ersten Link oben dokumentiert und Es ist nur eine JSON-Datei mit Dingen wie type, project_id, private_key usw.).
try (FileInputStream serviceAccount = new FileInputStream(credentialsFilePath)) {
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl(databaseURL)
.build();
FirebaseApp.initializeApp(options);
} catch (IOException e) {
LOG.error("Firebase credentials file not found");
throw e;
}
Es findet auf jeden Fall die Datei, aber wenn ich die Anmeldeinformationen überprüfen haben sie Nullwerte, und wenn ich versuche, das Token ich diese Ausnahme erhalten zu überprüfen.
java.lang.IllegalArgumentException: projectId must be set
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)
at com.google.firebase.auth.internal.FirebaseTokenVerifier.<init>(FirebaseTokenVerifier.java:50)
at com.google.firebase.auth.internal.FirebaseTokenVerifier$Builder.build(FirebaseTokenVerifier.java:212)
at com.google.firebase.auth.FirebaseAuth$2.then(FirebaseAuth.java:156)
at com.google.firebase.auth.FirebaseAuth$2.then(FirebaseAuth.java:152)
at com.google.firebase.tasks.ContinueWithCompletionListener$1.run(ContinueWithCompletionListener.java:33)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Ich habe durch die Dokumentation zu lesen und schaute auf den Beispielen in ihrer GitHub-Repository, aber sie scheinen nicht mit einem vollen Arbeitsbeispiel von Firebase unter Verwendung von Java in einer Web-Anwendung zu haben.
Die Frage ist also, wie kann ich es funktionieren lassen? Wie verwenden Menschen Firebase in diesem Zusammenhang?
Danke.
P.S. 1: Ich verwende die Anwendung nicht in der Google Cloud Platform. Daher kann ich FirebaseCredentials.applicationDefault() nicht verwenden, damit Google die Anmeldeinformationen automatisch lädt.
P.S. 2: Ich musste das Modul "guava-jdk5" aus der Firebase-Abhängigkeit ausschließen, da ich auch feder-data-elasticsearch verwende und es aufgrund eines Abhängigkeitskonflikts nicht funktionierte. Aber ich habe immer noch Guave: 18.0 im Klassenpfad.