2017-08-14 62 views
0

我使用Firebase和Swift進行與Instagram的自定義身份驗證。觀察者的完成處理程序未調用,如何檢入代碼

我現在有這個問題,Remove a user through dashboard, but the user is still logged in?

當我啓動應用程序,我有這樣的監聽器:

Auth.auth().addStateDidChangeListener { 

在我設置一個觀察者:

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

withwithCancel處理程序不會執行,因爲用戶的令牌不再存在。 (非常奇怪的IMO,即使withCancel不執行)。

我要趕在代碼這種情況下,強制註銷,像帖子說:你

檢查是否可以讀取你的用戶區域,如果有什麼都沒有,強制註銷。

回答

0

我最終報告了一個到Firebase的錯誤報告。 我會發布回覆,因爲它可能會在未來幫助某人。

從火力地堡的人回答這個,

你所描述的現象是設計意圖。即使您已從應用程序中刪除用戶 ,用戶的 會話也將無限期地持續下去。爲了幫助您解決這種情況,您可以查看以下StackOverflow的 帖子,這些帖子可能會爲您提供有關 如何處理該問題的更多信息。

我不行

更多關於這一點,我已經與取消塊,它爲什麼沒有堅持執行undertrand爲什麼withCancel完成處理程序未被調用。 從這個:

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

當我把兩個打印斷點,應用程序不會停止。所以,即使withCancel未被調用。

答案:

去你withCancel完成處理查詢,讓我 給你一點信息在這裏。如果 客戶端未經身份驗證並且不再有權限接收 事件,則會調用取消塊。此外,還值得一提的是,在離線模式下不會調用取消塊 ,因爲Firebase旨在在此條件下正常工作 。您可以查看我們的文檔以瞭解更多 的詳細信息。