这个帖子描述如何将多个帐户绑定到一个帐户$uid
in a users
收藏。
以下是这些安全规则:
"rules": {
"users": {
"$uid": {
".write": "auth != null &&
(data.val() === null ||
(auth.provider === 'facebook' && auth.id === data.child('facebookUid').val()) ||
(auth.provider === 'twitter' && auth.id === data.child('twitterUid').val()))"
}
},
"usersMap": {
"facebook": {
"$fuid": {
".read": "auth != null && auth.provider === 'facebook' && auth.id === $fuid",
".write": "auth != null &&
(data.val() === null ||
root.child('users').child(data.val()).child('facebookUid').val() == auth.id)"
}
},
"twitter": {
"$tuid": {
".read": "auth != null && auth.provider === 'twitter' && auth.id === $tuid",
".write": "auth != null &&
(data.val() === null ||
root.child('users').child(data.val()).child('twitterUid').val() == auth.id)"
}
}
}
}
以下是我想象的使用这些规则的实用方法:
A user "Logs in”与他们的 Facebook 帐户。
是否$fuid
存在?如果不添加新的$uid
to users
。在成功回调中创建一个$fuid
under userMap/facebook
财产价值为$fuid.uid
等于$uid
.
如果确实存在,则忽略该请求并返回“用户已存在”之类的消息。
但是,如果用户想要将另一个帐户绑定到同一个主帐户怎么办$uid
?
假设用户仍然使用其 Facebook 帐户登录并想要添加其 Twitter 帐户。让我们再次回顾一下该工作流程......
用户使用另一个帐户登录。
-
是否$tuid
存在?不,但是如果auth
对象同时持有 Facebook 和 Twitter 会话,那么我们不想创建另一个对象$uid
- 相反,我们想要映射$tuid
到相同的$uid
the $fuid
也被映射了。
如果您想将多个帐户绑定到一个 uid,则需要生成您自己的代币.
例如,您可以使用Firebase.push为每个用户生成唯一的 ID,并在您的令牌中使用这些 ID。这不是简单的事情,因为它要求您具备:
- 一种独立于身份验证方法存储用户 ID 的方法(cookie?)
- 使用不同计算机时将身份验证帐户链接在一起的方法
在许多用例中,这甚至可能适得其反;在大多数情况下,用户将使用单一身份验证方法登录,甚至可能希望使用 diff 身份验证方法来创建单独的帐户。因此,除非您有一个依赖于提供商之间共享数据的应用程序,否则可能不值得这么麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)