我在我的移动应用程序中使用离子3角度,并使用fb native cordova插件登录。
firebase db安全文档使用类似
的语法{
"rules":{
"users":{
"$user_id":{
".write":"$user_id === auth.id"
}
}
}
}
fb身份验证在我的应用程序中如下所示
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等?
答案 0 :(得分:1)
auth firebase变量理论上是令牌代理:假设您已经启用了 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()
承诺中检索。
很抱歉,如果解释更多是必要的话。简而言之。登录后uid始终与firebase.auth().currentUser.uid
一起出现,而且uid是数据库规则在auth.uid
中引用的内容,最后,auth / uid / etc几乎100%用firebase处理。