具有 facebook 身份验证和唯一 ID 的 Firebase 规则
Posted
技术标签:
【中文标题】具有 facebook 身份验证和唯一 ID 的 Firebase 规则【英文标题】:Firebase Rules with facebook Authentication and Unique IDs 【发布时间】:2018-04-27 16:06:43 【问题描述】:我正在寻找一些建议或可能的解决方案来加强我的 Firebase 规则。
这是我在 Firebase 中的用户树:
users
|_male
|_uid
|_female
|_uid
UID 将是创建帐户时的纪元时间戳,它将是一个有符号整数。
这些是 firebase 规则,基本上可以确保用户在读取或写入用户之前已登录并通过 Facebook 进行身份验证:
"users":
"male":
".indexOn": ["uid"]
,
"female":
".indexOn": ["uid"]
,
".read": "auth != null && auth.provider === 'facebook'",
".write": "auth != null && auth.provider === 'facebook'"
,
我只希望用户读/写他们的树,例如:
users->male->uid->1233254...
我担心我上面的规则可能会读取/写入另一个用户树。
如果我可以将应用 UID 与 Facebook UID 进行比较,那就太好了。 我确实在数据库的另一棵树中捕获了这个细节,例如:
user_fbuid
|_fbuid
|_facebook:a1244dxs
|_uid
我在这里确实有更好的规则来检查auth.uid
:
"user_fbuid":
"fbuid":
"$fbuid":
".indexOn": ["fbuid"],
".read": "$fbuid === auth.uid && auth.provider === 'facebook'",
".write": "$fbuid === auth.uid && auth.provider === 'facebook'"
,
,
如果有人有任何想法,我很乐意听到。谢谢
【问题讨论】:
【参考方案1】:我最终使用 facebook id 属性作为我自己的 uid 和以下规则:
"$uid":
// only the user can read and write to their tree
".read": "auth != null && auth.provider === 'facebook' && auth.token.firebase.identities['facebook.com'][0] === $uid",
".write": "auth != null && auth.provider === 'facebook' && auth.token.firebase.identities['facebook.com'][0] === $uid"
,
【讨论】:
以上是关于具有 facebook 身份验证和唯一 ID 的 Firebase 规则的主要内容,如果未能解决你的问题,请参考以下文章
具有社交媒体身份验证的用户的 Firebase 重置密码问题
每个提供商的 firebase 用户 ID 是唯一的(facebook、twitter、密码)
为使用电子邮件和 facebook_id 的 Web 和移动设备创建用户创建/身份验证系统
Firebase 身份验证中的用户 ID 如何在所有身份验证提供程序(Google、Facebook、Github)中都相同?