如何通过Facebook提供者更新身份验证帐户的电话号码

时间:2018-07-09 18:40:13

标签: firebase react-native firebase-authentication expo

我已经在Firebase中通过Facebook提供程序进行了身份验证。认证之后,我返回一个用户对象,其中包含用户详细信息,例如nameemailphoneNumber。要求是我需要更新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部分,并导航到地图视图。

1 个答案:

答案 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.
  });
相关问题