Ios Swift:Firebase读取权限被拒绝
所以我在swift中构建了这个应用程序,在用户登录之前应该读取数据 为了防止从我的应用程序中读取,我设置了基本安全规则:Ios Swift:Firebase读取权限被拒绝,ios,swift,firebase,Ios,Swift,Firebase,所以我在swift中构建了这个应用程序,在用户登录之前应该读取数据 为了防止从我的应用程序中读取,我设置了基本安全规则: ".read": "auth != null" 为了防止登录前读取,我在调用时设置了加载视图控制器: func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { let
".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
}
func应用程序(应用程序:UIApplication,willFinishLaunchingWithOptions启动选项:[NSObject:AnyObject]?)->Bool{
let ref=Firebase(url:)
ref.observeAuthEventWithBlock({authData in
如果authData!=nil{
segueToListViewController()
}
})
返回真值
}
但当我达到这种程度时,firebase有时会给我“拒绝许可”错误,有时则不会
我肯定有一个已登录的用户,因为我正在记录所有内容:
- 登录名已更改
- 登录AuthData facebook的用户:
- applicationIDecomeactive
- 加载的ListViewController
- 加载数据
- 错误:错误域=com.firebase代码=1“权限被拒绝”
那么为什么Firebase有时会在用户登录时拒绝阅读呢?我参加这个聚会已经很晚了,但是如果你把.read规则放高一级,直接放在孩子的名字下面,可能会有所帮助 比如说
{
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
}
},
"child": {
".read": "auth != null",
".write": "auth != null",
"$child": {
}
}
}
}
当那个块运行时,你在哪个线程上?您可以设置断点或使用
NSThread.isMainThread()
我尝试了这一点,尝试在'dispatch\u async(dispatch\u get\u main\u queue(),{}')中包装块调用,并尝试清除该点存在的所有可能侦听器,但没有成功。好像是记忆中的什么东西毁了它。