我已经在Firebase中通过Facebook提供程序进行了身份验证。认证之后,我返回一个用户对象,其中包含用户详细信息,例如name
,email
和phoneNumber
。要求是我需要更新phoneNumber
,因为我在用户对象中返回的电话号码是null
。电话号码对于我正在构建的应用程序至关重要。有一个选项,我首先使用Facebook提供者对用户进行身份验证,然后转到下一个屏幕,询问用户输入的电话号码,然后再次使用电话号码进行身份验证,这基本上就是通过Firebase的电话号码身份验证提供者创建新用户该链接帐户是通过使用Facebook身份验证提供程序和电话号码身份验证提供程序创建的,但是此方法有点奇怪,并且只需要存储用户的电话号码就可以完成很多工作,我还有其他方法吗?失踪?我确实需要存储用户电话号码并进行验证,但需要使用Facebook提供程序作为主要的身份验证方法。
我正在使用React Native(Expo)来构建移动应用程序。
我已经做过的事情,对我没有用。
let user = auth.currentUser;
user
.updateProfile({phoneNumber: <PhoneNumberInputFromUser>})
.then(() => {
this.navigateToMapView();
})
.catch(error => {
// TODO: Handle errors
console.log(error);
});
使用此方法不会引发错误,也不会更新phoneNumber
。但是,这里的另一件事很奇怪,那就是它进入了代码的then
部分,并导航到地图视图。
答案 0 :(得分:1)
我假设您将Facebook电话号码设置为Firebase用户电话号码。要安全地执行此操作:
在您的服务器上,使用facebook用户的访问令牌来查询facebook api中该用户的电话号码。
假设您知道相应的Firebase用户的uid:
admin.auth().updateUser(facebookUserFirebaseUid, {phoneNumber: facebookPhoneNumber})
.then(function(userRecord) {
// Return response to client to reload the user to pick up the changes.
})
.catch(function(error) {
// Error occurred.
});