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 

私が認証するとき、それが意図していたとして、それは時々仕事や作業全体の機能を介して実行ないということである言及する価値が他のものもあり、私はロード時に自動的にユーザーを認証しようとしたときのログですオート間違いなく

しかし、私は、AuthUser.userCheck機能を削除するには、アプリを再起動し、手動入力メソッド経由でログインし、後ろに機能を追加した後、これは常に右側のみ起こる。

をその認証のようです関数は、ユーザーがログインしていることを示しているにもかかわらず、常に真ではないため、データベースクエリは機能しませんでした。

しかし、データベースの読み書きルールを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

こんにちは。それは私のために働かなかった。それは私がそれを正しく説明することができない本当に奇妙な問題です。基本的には、ユーザーが認証された後(ユーザーが既にログインしている)、ユーザーがログインしていないかのように動作することがあるため、ユーザーの詳細を取得する直前に停止します。しかし、それ以外の時には、手動ログインを行った直後であることがほとんどです。(自動ログインを削除してもう一度追加する)私は、認証後にログインするようにルーティングすることで回避策をとっていました。あなたの答えをありがとうtho。感謝します。 –

関連する問題