我有一个屏幕,它是一个设置屏幕,我有一个用于更新数据的输入,
所以我想更新签名的电话号码如何实现? 我如何获得凭证?
这是我的代码 我使用了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);
};
如果您想使用异步等待模式,则不需要使用标准事件侦听器代码。问题的主要原因可能与创建凭据时需要使用 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);