1

Это странная проблема для меня.Firebase: Пользователь аутентифицирован, но запрос базы данных не инициируется

В принципе, я создаю приложение, которое после входа и аутентификации пользователя выведет страницу для загрузки данных из базы данных Firebase и сохранения в область.

Все работает нормально, пока я не попытался аутентифицировать пользователя без входа в систему (чтобы проверить, не вошли ли они в систему, чтобы автоматически вызвать контроллер просмотра домашней страницы).

Это мой код аутентификации

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) 

    } 
} 

и это мой код импорта данных

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") 
.... 

Проблема заключается в том, что после входа, журнал остановки печати после «Импорт ...» и остановить там. Если я вошел в обычном режиме (вместо аутентификации пользователя автоматически), он будет работать по всей функции отлично и не останавливается на «Импорт ...»

это логарифм нормального входа

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 

Это журнал, когда я пытаюсь для автоматической проверки подлинности пользователя при загрузке

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 

Существует еще одна вещь, которую стоит отметить, что, что он работает иногда и запустить через всю функцию рабочего, как было задумано, когда я аутентифицировать Aut omatically.

Однако, это всегда только произойдет сразу после того, как я удаляю функцию AuthUser.userCheck, перезапустить приложение, войдите в систему с помощью метода ручного ввода, и добавить функцию обратно.

Казалось бы, что AUTH несмотря на то, что пользователь вошел в систему, не всегда верен и, следовательно, запрос базы данных не работает.

Тем не менее, я проверил это, изменив правила чтения и записи базы данных на true, разрешив доступ без аутентификации, но он все еще оставался при «Импортировании ...», несмотря на это.

Надеюсь, это не слишком смущает и сообщит мне, нужна ли вам дополнительная информация для понимания моей проблемы.

+0

Отдайте свое дерево JSON .. Попробуйте использовать точки разломов, чтобы найти, на какой линии он ломался. – Dravidian

ответ

0

Попробуйте импортировать Firebase, поскольку она находится наверху. Я считаю, что вам больше не нужно импортировать FireAuth и все такое. Firebase должен держать все это как есть.

import Firebase 

^Это все, что мне нужно для аутентификации, беседы с базой данных и т. Д.

Я не совсем понимаю ваш вопрос, но если у вас возникли проблемы с инициализацией вашего пользователя и наблюдением его информации с запросом .. Это то, что я делаю, чтобы извлекать информацию и обновлять текстовую метку текущего пользователя .:

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 

     } 
} 

Я надеюсь, что смогу помочь.

+0

Привет. это не сработало для меня.Это действительно странная проблема, что я не могу даже объяснить ее должным образом. В принципе, после аутентификации пользователя (напечатан: пользователь уже зарегистрирован), иногда он ведет себя так, как будто пользователь не вошел в систему, поэтому он просто останавливается там, прямо перед тем, как он выберет детали пользователя. Однако в других случаях он работает отлично, в основном сразу после того, как я выполнил ручной вход в систему (удаление автоматического входа в систему и добавление его обратно). Мне удалось выполнить обходной путь, проложив его для входа в систему после аутентификации, и он работает нормально nw. Спасибо за ваш ответ. Ценить это. –