2017-12-19 5 views
-1

Was ich versuche zu erreichen, ist eine Verbindung zu meiner Firebase-Datenbank zu öffnen und einige Daten zu erhalten, die ich analysieren muss. Ich führe Spring mit dem Spring Boot Framework, dem Admin SDK von Firebase, Kotlin und Gradle. Unter Windows 10 funktioniert es wie erwartet, aber wenn ich versuche, die .jar-Datei auf meinem Linux-Server auszuführen, erhält es keine Daten oder Fehler. Es bleibt beim ValueEventListener hängen. Ich habe ufw installiert, aber das Deaktivieren oder Hinzufügen von Ports 5228: 5230 (tcp/udp), hat das Problem nicht gelöst.Firebase-Verbindung funktioniert nicht unter Linux in SpringBoot

val dataMinifiedRef = database.reference.child("minifiedData").child("areas") 
    dataMinifiedRef.addListenerForSingleValueEvent(object : ValueEventListener { 
     override fun onCancelled(error: DatabaseError?) { 
      log.info(error!!.message) 
     } 

     override fun onDataChange(dataSnapshot: DataSnapshot) { 
      log.info("Got data") 
     } 
    }) 

EDIT: Dies ist, wie ich das Dienstkonto analysieren.

val str = "{\n" + 
       ... 
       "}\n" 

    // convert String into InputStream 
    val serviceAccount = ByteArrayInputStream(str.toByteArray()) 

    val options = FirebaseOptions.Builder() 
      .setCredentials(GoogleCredentials.fromStream(serviceAccount)) 
      .setDatabaseUrl("https://xxx.firebaseio.com") 
      .build() 

Ich bekomme den folgenden Fehler.

Tue Dec 19 15:31:41 CET 2017 [DEBUG] com.google.firebase.database.connection.PersistentConnection‌​: pc_0 - Trying to fetch auth token 
Tue Dec 19 15:31:41 CET 2017 [DEBUG] com.google.firebase.database.connection.PersistentConnection‌​: pc_0 - Error fetching token: java.io.IOException: Error getting access token for service account: 
+1

Es ist schwer zu sagen, was schief läuft. Wenn Sie [Debug-Protokollierung aktivieren] (https://firebase.google.com/docs/reference/admin/java/reference/com/google/firebase/database/FirebaseDatabase.html#setLogLevel (com.google.firebase.database .Logger.Level)) erhalten Sie möglicherweise einen Hinweis auf die Ausgabe. –

+0

es gibt Ihnen Protokoll "bekam Daten"? –

+0

Nein, es gibt kein Protokoll mit –

Antwort

0

Das Problem war, dass die Zeit auf unserem Linux-Server nicht automatisch synchronisiert wurde. Ich habe dieses article gefunden, wo er die Lösung erwähnte. Ich habe dann diesem guide gefolgt und NTP Server hinzugefügt, die unserem Serverstandort entsprechen.

Verwandte Themen