【发布时间】:2015-07-30 22:48:39
【问题描述】:
所以我正在快速构建这个应用程序,其中包含在用户登录之前应该读取的数据。
为了防止它被从我的应用程序中读取,我提出了基本的安全规则:
".read": "auth != null"
为了防止在登录前读取,我在调用时放置了一个加载视图控制器:
func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
let ref = Firebase(url: "<my firebase url>")
ref.observeAuthEventWithBlock({ authData in
if authData != nil {
segueToListViewController()
}
})
return true
}
但是当我达到这一点时,有时firebase会给我“权限被拒绝”错误,有时它不会。
我确定有一个已登录的用户,因为我正在记录所有内容:
- 登录已更改
- 用户登录 AuthData facebook:
- applicationDidBecomeActive
- 已加载 ListViewController
- 加载数据
- 错误:错误 Domain=com.firebase Code=1 "Permission Denied"
那么为什么 Firebase 有时会在用户登录时拒绝阅读?
【问题讨论】:
-
该块运行时您在哪个线程上?您可以设置断点或使用
NSThread.isMainThread() -
我试过了,尝试将块调用包装在`dispatch_async(dispatch_get_main_queue(), {})`中,并尝试清除当时存在的所有可能的侦听器,但没有成功。似乎记忆中的某些东西正在破坏它。