具有 facebook 身份验证和唯一 ID 的 Firebase 规则

标签 firebase firebase-realtime-database firebase-authentication firebase-security

我正在寻求一些建议或可能的解决方案来加强我的 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'"
       }
   },
},

如果有人有任何想法,我很想听听。谢谢

最佳答案

我最终使用 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 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47290352/

相关文章:

swift - databaseReference.observe(DataEventType.value, :{(DataSnapshot) not working properly all the time

android - 如何使用列表/数组列表向 Firebase 添加和检索数据?

c# - Dialogflow、Google 帐户链接和 ASP.NET Core API(Webhook)

javascript - firebase auth verifyBeforeUpdateEmail 和 updateEmail 之间的区别

java - 如何使用 firebase (FCM) 生成 token 并共享

Firebase TLS 限制

javascript - Cloud Firestore 集合查询不起作用

android - Flutter 在尝试 Firebase 身份验证时无法捕获 PlatformException

android - 无法在 RecyclerView 和 CardView 中查看 Firebase 数据

ios - Firebase:它如何知道我的 OAuth token 与哪个帐户相关联?