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

Firebase Rules with facebook Authentication and Unique IDs

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

我只希望用户read/write到他们的树,例如:

users->male->uid->1233254...

恐怕按照我上面的规则,他们可能会读写 from/to 另一个用户树。

如果我能将应用程序 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"
        },