javascript - 使用fb身份验证的firebase json db安全规则

标签 javascript firebase firebase-realtime-database firebase-authentication ionic3

我在我的移动应用程序中使用 ionic 3 Angular,并使用 Facebook 原生 Cordova 插件进行登录。

Firebase 数据库安全文档使用类似

的语法
{  
   "rules":{  
      "users":{  
         "$user_id":{  
            ".write":"$user_id === auth.id"
         }
      }
   }
}

我的应用程序中的 Facebook 身份验证如下所示

 doLogin(){
    if (this.platform.is('cordova')) {
      return this.fb.login(['email', 'public_profile']).then(res => {
        const facebookCredential = firebase.auth.FacebookAuthProvider.credential(res.authResponse.accessToken);
         firebase.auth().signInWithCredential(facebookCredential);
         this.navCtrl.setRoot(TabsPage); 
      })
    }
}

我的问题是上面的代码处理了auth firebase变量,或者我需要一些额外的东西来进行auth以获得所需的uid等?

最佳答案

理论上,auth firebase 变量是 token 处理的:假设您已经启用了 Facebook 登录方法。但是,您显示的数据库规则不一定相关。

这些规则(与上面相同):

"rules": {
    "users":{
        "$variable":{ ".write": "$variable=== auth.uid" }

规定用户只能写入具有相同 uid 的子节点。我将 $user_id 更改为 $variable 以突出显示 $ 仅表示代表子节点名称的变量。 (我可能应该提到它应该是 auth.uid 而不是 auth.id)

这用于保存用户特定数据。因此,当他们注册时,您可以有一个函数,表示

firebase.database().ref('users').child(firebase.auth().currentUser.uid).update(<your custom data here>);

*请注意,用户的子级是“firebase.auth().currentUser.uid”,可以选择从 firebase.auth().signInWithCredential() Promise 中检索它。

如果解释过于必要,我们深表歉意。简而言之。登录后,uid 始终与 firebase.auth().currentUser.uid 一起出现,并且该 uid 是数据库规则在 auth.uid 中引用的内容,最后, auth/uid/etc 几乎 100% 由 firebase 处理。

关于javascript - 使用fb身份验证的firebase json db安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49264018/

相关文章:

swift - 如何寻找一个不知名的 child

javascript - 尝试创建带有 future 日期的 Javascript 时钟

javascript - Jquery Twitter Bootstrap 弹出工具提示,一次只允许 1 个弹出实例

javascript - 测试 JavaScript 的最佳方法是什么?

javascript - 如何在 firebase 中更新字典,同时使用 angularjs 添加时间戳?

ios - 如何删除tableview、coredata、firebase数据库中的数据,删除顺序?

swift - 像 Snapchat 一样构建 Firebase 数据库

javascript - 如何在asp.net中更新gridview文本框值

angularjs - 在 Firebase 中查询多个值,类似于 IN() SQL 功能

ios - 使用 Swift 4 和 Firebase 从具有唯一 ID 的多个用户读取位置