kcm*_*fat 6 authentication facebook anonymous-users firebase
背景:在我的iOS游戏中,我想允许用户在不登录的情况下进行游戏(在Firebase中匿名进行身份验证以保存用户数据),还可以让他们选择使用Facebook登录以解锁其他游戏玩法.
我正在尝试修改此帖子,用匿名登录替换Twitter登录:
"users": {
"$userid": {
// Require the user to be logged in, and make sure their current credentials
// match at least one of the credentials listed below, unless we're creating
// a new account from scratch.
".write": "auth != null &&
(data.val() === null ||
(auth.provider === 'facebook' && auth.uid === data.child('facebook/id').val() ||
(auth.provider === 'anonymous' && auth.uid === data.child('anonymous/id').val()))"
}
}
Run Code Online (Sandbox Code Playgroud)
我很困惑转换将如何与这些规则一起使用.特别是说:
用户匿名进行身份验证,并且能够创建存储在其下的匿名uid的规范用户记录users/"$userid"/anonymous/id.这是允许的,因为用户已通过身份验证并且第一次设置了用户对象(auth != null && data.val() === null).
users/"$userid"/允许任何后续写入,因为经过身份验证的用户的匿名ID存储在用户树(auth != null && (auth.provider === 'anonymous' && auth.uid === data.child('anonymous/id').val()))中.
用户登录Facebook.现在authData包含尚未写入的facebook uid users/"$userid"/facebook/id.写入该位置失败,因为安全规则不允许.
因此,在facebook身份验证完成之前,匿名用户无法访问facebook uid.在那时,写入是为时已晚,users/"$userid"/facebook/id因为经过身份验证的用户现在是Facebook用户,并且没有在那里写的权限.
我错过了什么吗?关于如何纠正这种情况的任何想法?
| 归档时间: |
|
| 查看次数: |
1307 次 |
| 最近记录: |