方案是,我创建了一个expo应用程序,如果用户不存在,那么我将使用firestore匿名登录。我正在使用我的iPhone设备来测试该应用程序。如果我停止应用程序并再次运行,则应用程序将维持我匿名登录的用户。
现在我已经使用以下代码实现了电话身份验证
try {
var phoneNumber = this.state.phoneNumber;
const phoneProvider = new f.auth.PhoneAuthProvider();
const verificationId = await phoneProvider.verifyPhoneNumber(
phoneNumber,
this.recaptchaVerifier
);
this.setState({ verificationId: verificationId });
this.setState({ index: 1 });
} catch (err) {
alert(err.message);
}
连同电话号码和验证码一起发送代码,该代码返回 verificationId
验证使用以下代码,
const verificationId = this.state.verificationId;
const verificationCode = this.state.verificationCode;
const credential = f.auth.PhoneAuthProvider.credential(
verificationId,
verificationCode
);
await auth.currentUser.linkWithCredential(credential)
.then(function (usercred) {
console.log("anonymous account upgraded", usercred);
}).catch(function (error) {
console.log("Error upgrading anonymous account", error);
return;
});
该代码有效,并将匿名用户链接到经过电话验证的用户,并返回非匿名用户对象。
现在的问题是,如果我在设备上重新运行该应用程序,它将不再维持该用户的身份,并再次以匿名用户身份登录。
先谢谢了。