我在 Firebase 上使用电子邮件/密码方法登录用户。我对切换到电话身份验证不感兴趣。话虽这么说,我想将用户的电话号码存储在他们的个人资料中以供以后访问。
我知道我可以像这样存储它:
用户/UID/电话号码:XXXXXX
但我希望能够在以后访问它,而不必查询该用户 ID。相反,我想存储它,以便我可以通过 currentUser.phoneNumber 或类似的东西获取它。
我知道 updateProfile 需要一个 displayName 和 profilePic,但文档似乎不允许使用phoneNumber。有办法实现这个目标吗?
您无法让用户手机执行以下操作:
mAuth = FirebaseAuth.getCurrentUser().getPhoneNumber();
因为如果不实施 Firebase 电话身份验证,您就无法直接访问用户电话。
由于您不关心该号码是否来自该人,因此解决方法是执行
AlertDialog
或 EditText
来提示用户输入您想要存储的所需号码,是的,您需要每次查询它,因为您没有从 Auth
获取它。
如您所说,在 userInfo 中获取用户电话号码而无需查询数据库的唯一方法是实现电话身份验证。
采取解决方法并不能保证电话号码 用户输入的是正确的
考虑使用管理 SDK
updateUser
API:https://firebase.google.com/docs/auth/admin/manage-users#update_a_user
admin.auth().updateUser(uid, {
phoneNumber: "+11234567890",
}).then(function(userRecord) {
// User updated. You can now get this from client:
// FirebaseAuth.getCurrentUser().getPhoneNumber();
}).catch(function(error) {
// Error occurred.
});
您始终可以在与电子邮件相同的字符串中发送电话号码,并使用“:”(或任何其他内容)等分隔符,并在登录过程中用该分隔符拆分字符串。这样您就可以将电话号码存储在 firebase 用户标识符中.