在 Firebase 身份验证中更新电话号码 - React Native

问题描述 投票:0回答:1

我有一个屏幕,它是一个设置屏幕,我有一个用于更新数据的输入,

所以我想更新签名的电话号码如何实现? 我如何获得凭证?

这是我的代码 我使用了react-native-firebase v6+

import auth from '@react-native-firebase/auth';

const updateMobile = async () => {
  await auth().currentUser.updatePhoneNumber((credential) =>
    console.log(credential)
  );
};

当我调用此函数时,出现此错误

尝试调用虚方法“boolean 空对象引用上的 java.lang.String.equals(java.lang.Object)"

更新

我读了一份文档,得到了这样的凭证,但我有一个错误,我不知道谁是绑定的 -_-

可能的未处理的承诺拒绝(id:2):TypeError:无法读取 未定义的属性“绑定”

=====

当我删除

await
中的
const snapshot = auth().verifyPhoneNumber(mobile)
时,错误消失,但我看到一个新错误

错误:[auth/invalid-credential] 提供的身份验证凭据 格式错误、已过期或当前不受支持。

const updateMobile = async () => {
  const snapshot = await auth()
    .verifyPhoneNumber(mobile)
    .on('state_changed', (phoneAuthSnapshot) => {
      console.log('Snapshot state: ', phoneAuthSnapshot.state);
    });
  const credential = auth.PhoneAuthProvider.credential(
    snapshot.verificationId,
    snapshot.code
  );
  console.log('credential', credential);
  await auth().currentUser.updatePhoneNumber(credential);
};
javascript firebase react-native firebase-authentication react-native-firebase
1个回答
0
投票

如果您想使用异步等待模式,则不需要使用标准事件侦听器代码。问题的主要原因可能与创建凭据时需要使用 async 关键字有关。

除此之外,snapshot.code 仅当在操作系统级别启用该选项时才会在 Android 上自动填充,因此对于大多数情况,我们需要使用发送到用户手机的代码,该代码手动输入到用户界面。

我的项目中有以下代码:

const snapshot = await auth().signInWithPhoneNumber(phoneNumber);
console.log("snapshot: ", snapshot);
const credential = await auth.PhoneAuthProvider.credential(
    snapshot.verificationId,
    userCode //userCode is the otp sent to phone, and entered in to ui
);
console.log("credential: ", credential);
await auth().currentUser?.updatePhoneNumber(credential);
console.log("new phone number: ", auth().currentUser?.phoneNumber);
© www.soinside.com 2019 - 2024. All rights reserved.