Swift:Firebase 读取权限被拒绝
Posted
技术标签:
【中文标题】Swift:Firebase 读取权限被拒绝【英文标题】:Swift: Firebase read permission denied 【发布时间】: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(), )`中,并尝试清除当时存在的所有可能的侦听器,但没有成功。似乎记忆中的某些东西正在破坏它。
【参考方案1】:
我参加这个聚会已经很晚了,但是如果您将 .read 规则提高一级,直接放在孩子的名字下,这可能会有所帮助。
例如
"rules":
"users":
"$uid":
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid"
,
"child":
".read": "auth != null",
".write": "auth != null",
"$child":
【讨论】:
以上是关于Swift:Firebase 读取权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
批量用户订阅 Firebase 中的主题时出现权限被拒绝错误
当observeSingleEvent时Swift Firebase规则权限被拒绝