2017-08-14 8 views
0

Instagramでカスタム認証を行うためにFirebaseとSwiftを使用します。私はアプリを起動すると、私は今、この問題を抱えているオブザーバの完了ハンドラが呼び出されていない、コードをチェックインする方法

は、Remove a user through dashboard, but the user is still logged in?

、私はこのリスナーを持っている:

ref.child("users/\(user.uid)").observe(.value, with: { (snapshot) in 
     print(snapshot) 
     .......... 
    }, withCancel: { error in 
     print(error) 
    }) 

withと:ここで私はオブザーバを設定しています

Auth.auth().addStateDidChangeListener { 

ユーザのトークンがもう存在しないため、withCancelハンドラは実行されません。 (withCancelでも実行されない非常に奇妙なIMO)。

私はポストが述べ同じように、ログアウトを強制するために、コード内でこのような状況をキャッチする必要があります:あなたは、ユーザー領域に読み、そしてそこに何もない場合は、ログを強制することができるかどうか

チェックを。

答えて

0

Firebaseにバグレポートを報告しました。 私は今後誰かを助けるかもしれないので、私はその回答を投稿します。 Firebaseから

人はこれを答え、

あなたが説明した動作は、設計者の意図しています。アプリケーションを から削除しても、ユーザーの セッションは無期限に存続します。このシナリオを手助けするために、 StackOverflowの投稿に続いて の詳細情報を確認することができます。この上

より、私はそれが実行されなかった理由をキャンセルブロック、と主張している:

を私はしないでくださいunderstrand理由withCancel補完ハンドラが呼び出されていません。これから は:

ref.child("users/\(user.uid)").observe(.value, with: { (snapshot) in 
    print(snapshot) 
    .......... 
    }, withCancel: { error in 
     print(error) 
    }) 

私は両方のプリントにブレークポイントを入れて、アプリは停止しません。したがって、withCancelさえ呼び出されません。

答え:

があなたのwithCancel完了ハンドラの問い合わせに行く、私はちょうど はあなたにここに情報のビットを与えてみましょう。キャンセルブロックは、 クライアントが認証されておらず、 イベントを受信する権限をもたない場合に呼び出されます。さらに、オフラインモード中にキャンセルブロック が呼び出されないことにも言及しておくと、Firebaseは をこの状態でうまく動作するように設計されています。詳細については、 の詳細をご確認ください。

関連する問題