我正在从电子邮件+密码过渡并将 Firebase Auth SignInWithPhoneNumber 集成到我的 React Web 应用程序中,我对如何从
1. 提交电话号码
到 2. 提交代码验证感到困惑。
在我看来,firebase 函数 .signInWithPhoneNumber 想要同时获得电话 # + 验证码,据我们所知,这并不是现实生活中的运作方式。
那么,如何实现提示用户输入验证码呢?
handleSignUp = event => {
event.preventDefault();
window.appVerifier = new firebase.auth.RecaptchaVerifier(
"recaptcha-container",
{
size: "invisible"
}
);
const appVerifier = window.appVerifier;
firebase
.auth()
.signInWithPhoneNumber(this.state.phoneNumber, appVerifier)
.then(function(confirmationResult) {
console.log("Success");
// SMS sent. Prompt user to type the code from the message, then confirm
return confirmationResult.confirm(verificationId);
})
.catch(function(error) {
console.log("Error:" + error.code);
});
};
Run Code Online (Sandbox Code Playgroud)
报名表:
<TextField
name="First name"
value={this.state.firstName}
/>
<TextField
name="lastName" …Run Code Online (Sandbox Code Playgroud) A. 一致性无处不在;运行 !headless,我看它有时工作,有时不工作(比如输入错误的数据),它真的是 50/50。如何优化我的代码以获得 100% 的可靠性?
更新:
通过实现承诺延迟功能和延迟操作来修复不一致。
如何单击既不是提交类型也没有名称和 ID 的按钮?
<button class="sb-frap" data-e2e="sendGift">Send gift</button>
Run Code Online (Sandbox Code Playgroud)
JS路径:
document.querySelector("#js-content > div > div:nth-child(6) > span > div > div.absolute.bg-white.overflow-auto.content___2_l5Q > div > div > div > div > div.invisible.base___3dWsJ.alwaysRelative___3FHV5 > div > span > div > button")
Run Code Online (Sandbox Code Playgroud)
await Promise.all([
await page.waitForSelector(".sb-frap"),
await page.click('button[class=".sb-frap"]'),
]);
})();
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!