firebase - 获取从登录用户 firebase null 返回中检索到的个人资料信息
问题描述
从我的 firebase 数据中,我尝试使用firebase 文档中的这个示例访问用户信息,例如政府机构和显示名称。当我使用这个例子时
{
"users" : {
"citizen" : {
"NiPS4VtdFPgVMVyhCVfMtzdP85g1" : {
"displayName" : "user-citizen",
"email" : "user@user.com",
"password" : "palls123",
"pnumber" : "123",
"repassword" : "palls123"
},
"Pba7iULL4wYkTQxHB5tpbNDj7v02" : {
"displayName" : "kevin",
"email" : "ez@ez.com",
"password" : "palls123",
"pnumber" : "545",
"repassword" : "palls123"
},
"gf2o8dhs9VhIsCK5Ui5rEizESbj1" : {
"displayName" : "kevin",
"email" : "dli@dli.com",
"password" : "palls123",
"pnumber" : "5454",
"repassword" : "palls123"
}
},
"government" : {
"bfp" : {
"AgIqgADtMeNS5d3BJTnCI0uCjcl1" : {
"displayName" : "bfp-user",
"email" : "bfp@bfp.com",
"gov_agency" : "bfp",
"gov_id" : "123",
"password" : "palls123",
"pnumber" : "1234",
"repassword" : "palls123",
"toggle" : true
}
},
"ndrmmc" : {
"XdoC2Dny5ZM69z8B2BrSWBS3CIY2" : {
"displayName" : "ndrmmc-user",
"email" : "ndrmmc@ndrmmc.com",
"gov_agency" : "ndrmmc",
"gov_id" : "123",
"password" : "palls123",
"pnumber" : "123",
"repassword" : "palls123",
"toggle" : true
}
},
"pnp" : {
"MhKiEoCtytQAHooHclSZIB3gsK42" : {
"displayName" : "pnp-user",
"email" : "pnp@pnp.com",
"gov_agency" : "pnp",
"gov_id" : "23455",
"password" : "palls123",
"pnumber" : "1234",
"repassword" : "palls123",
"toggle" : true
}
},
"rta" : {
"fehvPVwX6NXnVkf3hOyRsQBDH2Y2" : {
"displayName" : "rta-user",
"email" : "rta@rta.com",
"gov_agency" : "rta",
"gov_id" : "1234",
"password" : "palls123",
"pnumber" : "123",
"repassword" : "palls123",
"toggle" : true
}
}
}
}
我正在尝试使用firebase 文档中的此示例访问用户信息,例如政府机构和显示名称。当我使用此示例时,来自文档
var user = firebase.auth().currentUser;
if (user != null) {
user.providerData.forEach(function (profile) {
console.log(" Gov Agency : " + profile.gov_agency);
console.log(" Provider-specific UID: " + profile.uid);
console.log(" Name: " + profile.displayName);
});
}
除了它提供给用户电子邮件的 uid 外,它在我这边返回 null 。我哪里做错了?
PS:有两种类型的用户,政府客户和公民客户
解决方案
你得到一个空值是正常的profile.gov_agency
:正如这里详述的,用户的providerData
属性是一个“非空数组”firebase.UserInfo
反过来,UserInfo具有一组已定义的属性:email
、phoneNumber
等。因此profile
没有任何gov_agency
属性。
您显然将您可以从中获得的值firebase.auth
与您保存在实时数据库中的值混合在一起。
因此,您应该根据userId
或email
(取决于您的数据模型)查询数据库,以获取gov_agency
(and displayName
) 的值以“确定它是政府客户还是公民客户”。
要查询数据库,请参阅https://firebase.google.com/docs/database/web/read-and-write和https://firebase.google.com/docs/database/web/lists-of-data
请注意,displayName
IS 也是 的属性UserInfo
,但显然您在创建用户时没有设置它。
推荐阅读
- sql - 如果字符多于 2 个字母,则提取名字
- javascript - 将文本框上的用户输入限制为特定字母
- java - IntelliJ:(键盘快捷键)跳转到下一个/上一个建议
- spring-data-jpa - SQL 语句 org.h2.jdbc.JdbcSQLException 中的语法错误:
- odata - OData 未绑定功能选择加入
- linux - RCU 同步是否只为所有不同数据类型的读取器持有一个全局锁?
- amazon-web-services - 来自 s3 存储桶的 API Gateway cors 问题
- facebook - Facebook Unity SDK - 在 Facebook 设置中取消授权帐户不会在登录时引发问题
- typescript - 使用 angular.json stylePreprocessor 在 NativeScript 应用程序中包含共享样式
- android - Android:不能使用提供的参数调用以下函数