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 

내가 인증 할 때 의도 된대로 가끔 작동 및 작업 전체 기능을 통해 실행 않는다는 것입니다 언급 할 가치가 또 다른 한가지도 있습니다 내가 로딩시 자동으로 사용자를 인증 할 때의 로그입니다 자동 omatically. 내가의 AuthUser.userCheck 기능을 제거하려면 응용 프로그램을 다시 시작, 수동 입력 방법을 통해 로그인 한에서 함수를 다시 추가 한 후

그러나, 이것은 항상 오른쪽에만 발생합니다.

인증 것 같다 함수는 사용자가 로그인했음을 보여주고 있음에도 불구하고 항상 true가 아니므로 데이터베이스 쿼리가 작동하지 않습니다.

그러나 데이터베이스 읽기 및 쓰기 규칙을 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

안녕하세요. 그것은 나를 위해 작동하지 않았다.그것은 정말 이상한 문제입니다. 나는 그것을 제대로 설명하지 못합니다. 기본적으로, 사용자가 인증 된 후에 (인쇄 된 : 사용자는 이미 로그인되어 있음) 사용자가 로그인하지 않은 것처럼 행동하기 때문에 사용자 세부 정보를 가져 오기 바로 전에 중지됩니다. 그러나 다른 경우 수동으로 로그인 한 직후부터 완벽하게 작동합니다 (자동 로그인 제거 후 다시 추가). 나는 인증 후에 로그인으로 라우팅하여 해결 방법을 풀어 냈고, 그것은 훌륭하게 작동한다. 당신의 대답을 주셔서 감사합니다. 고맙습니다. –

관련 문제