1

Dies ist ein seltsames Problem für mich.Firebase: Benutzer Authentifiziert, aber Datenbankabfrage ist nicht initiiert

Im Grunde baue ich eine App, die beim Anmelden und Authentifizieren des Benutzers eine Seite zum Laden der Daten aus der Firebase-Datenbank und Speichern in Realm öffnet.

Alles funktioniert gut, bis ich versuchte, Benutzer ohne Anmeldung zu authentifizieren (um zu überprüfen, ob sie bereits angemeldet sind, um automatisch den Home Page View Controller zu öffnen).

Das ist mein Auth-Code

import Foundation 
import FirebaseAuth 

class AuthUser { 

    func userCheck(completion:(message:String)->()){ 

    var message = "" 

    let user = FIRAuth.auth()?.currentUser 

    if (user != nil) { 

     print("User is already logged in") 

     message = "LoggedIn" 

    } else { 

     print("User is not logged in") 
     message = "notLoggedIn" 

    } 

    completion(message: message) 

    } 
} 

und dies ist mein Import Datencode

import Foundation 
import FirebaseDatabase 
import FirebaseAuth 
import RealmSwift 

class MenuDataRealm { 

    func importData(completion: (message:String)->()){ 

    print("Initiating Menu Data Import...") 

    // Realm 
    let realm = try! Realm() 

    print("Importing...") 

    let ref = FIRDatabase.database().reference() 

    ref.child("Category").observeSingleEventOfType(.Value, withBlock: { (snapshot) in 

     print("Start Menu Data Retrieval") 
.... 

Das Problem ist, dass der Log-Stop-Druck nach "Importieren ..." auf Protokollierung und stoppen Dort. Wenn ich normalerweise angemeldet (anstelle Benutzer automatisch authentifizieren), wird es perfekt durch die gesamte Funktion läuft und hört nicht auf „Importieren ...“

dies das Protokoll der normalen Login ist

2016-08-25 01:25:05.481 MannaCatering[33636:480265] Configuring the default app. 
2016-08-25 01:25:05.502 MannaCatering[33636:] <FIRAnalytics/INFO> Firebase Analytics v.3200000 started 
2016-08-25 01:25:05.503 MannaCatering[33636:] <FIRAnalytics/INFO> To enable debug logging set the following application argument: - FIRAnalyticsDebugEnabled 
2016-08-25 01:25:05.507: <FIRInstanceID/WARNING> FIRInstanceID AppDelegate proxy enabled, will swizzle app delegate remote notification handlers. To disable add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO 
2016-08-25 01:25:05.515 MannaCatering[33636:] <FIRAnalytics/INFO> Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist 
2016-08-25 01:25:05.569 MannaCatering[33636:480305] Version 1.0.2 of  Realm is now available: https://github.com/realm/realm-cocoa/blob/v1.0.2/CHANGELOG.md 
User is already logged in 
2016-08-25 01:25:05.817 MannaCatering[33636:] <FIRAnalytics/INFO> Firebase Analytics enabled 
Logging In... with Email:[email protected] and Password:******** 
User is now Logged In 
Redirecting to Loading Data... 
Initiating Menu Data Import... 
Importing... 
Start Menu Data Retrieval 
Completed Menu Data Import 
Accessing Firebase 
Retrieving Details 
User Details Retrieved 
Redirecting to Gallery 

Dies ist das Protokoll, wenn ich versuche, den Benutzer automatisch beim Laden

2016-08-25 01:34:53.080 MannaCatering[33972:485449] Configuring the default app. 
2016-08-25 01:34:53.108 MannaCatering[33972:] <FIRAnalytics/INFO> Firebase Analytics v.3200000 started 
2016-08-25 01:34:53.109 MannaCatering[33972:] <FIRAnalytics/INFO> To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled 
2016-08-25 01:34:53.111: <FIRInstanceID/WARNING> FIRInstanceID AppDelegate proxy enabled, will swizzle app delegate remote notification handlers. To disable add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO 
2016-08-25 01:34:53.159 MannaCatering[33972:] <FIRAnalytics/INFO> Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist 
2016-08-25 01:34:53.166 MannaCatering[33972:485629] Version 1.0.2 of Realm is now available: https://github.com/realm/realm-cocoa/blob/v1.0.2/CHANGELOG.md 
User is already logged in 
Redirecting to Loading Data... 
Initiating Menu Data Import... 
Importing... 
2016-08-25 01:34:53.613 MannaCatering[33972:] <FIRAnalytics/INFO> Firebase Analytics enabled 

es gibt auch eine andere Sache, erwähnenswert, die zu authentifizieren ist, dass es manchmal funktioniert und durch die gesamte Funktion ausführen funktioniert, wie es beabsichtigt war, als ich authentifiziere aut omatisch.

Dies ist jedoch immer nur Recht geschehen, nachdem ich die AuthUser.userCheck Funktion entfernen, starten Sie die App, melden Sie sich über die manuelle Eingabemethode in, und fügen Sie in die Funktion zurück.

es, dass die Auth zu sein scheint Funktion, trotz der Anzeige, dass der Benutzer angemeldet ist, ist nicht immer wahr und daher die Datenbankabfrage hat nicht funktioniert.

Allerdings habe ich das getestet, indem ich die Datenbank-Lese- und -Schreibregeln auf true änderte, was den Zugriff ohne Authentifizierung erlaubte, aber trotzdem feststand bei "Importieren ...".

Ich hoffe, dies ist nicht zu verwirrend und lassen Sie mich wissen, wenn Sie zusätzliche Informationen benötigen, um mein Problem zu verstehen.

+0

Geben Sie Ihren JSON-Baum ... Versuchen Sie, mit Hilfe von Bruchpunkten herauszufinden, bei welcher Linie der Bruch stattgefunden hat – Dravidian

Antwort

0

Versuchen Sie Firebase so zu importieren, wie es oben ist. Ich glaube, dass Sie FireAuth und all das nicht mehr importieren müssen. Firebase sollte alles so wie es ist halten.

import Firebase 

^Das ist alles was ich tun muss, um zu authentifizieren, mit der Datenbank zu sprechen, ect.

Ich verstehe Ihre Frage nicht vollständig, aber wenn Sie Probleme haben, Ihren Benutzer zu initialisieren und seine Informationen mit einer Abfrage zu beobachten. Das ist, was ich tue, um Informationen zu ziehen und ein Textlabel des aktuellen Benutzers zu aktualisieren .:

var user: FIRUser! 
func authenticateUser() { 
    self.user = FIRAuth.auth()?.currentUser 
    FIRDatabase.database().reference().users.child(user!.uid).child("userInfo").observeEventType(.Value) { (snapshot: FIRDataSnapshot) in 

     self.fullNameValue = snapshot.value!["fullName"] as! String 

     } 
} 

Ich hoffe, ich könnte helfen.

+0

Hi. Es hat nicht für mich funktioniert.Es ist wirklich ein komisches Problem, dass ich es nicht richtig erklären kann. Nachdem der Benutzer authentifiziert wurde (ausgedruckt: Benutzer ist bereits angemeldet), verhält er sich manchmal so, als ob der Benutzer nicht angemeldet ist. Er stoppt also direkt vor dem Abrufen der Benutzerdetails. In anderen Fällen funktioniert es jedoch einwandfrei, meistens direkt nach dem manuellen Anmelden. (Entfernen der automatischen Anmeldung und erneutes Hinzufügen). Ich schaffte es, einen Workaround zu lösen, indem ich ihn nach Authentifizierung zur Anmeldung leite und es funktioniert gut. Danke für deine Antwort. Bin dankbar. –

Verwandte Themen