javascript - 我在哪里放置用于 firebase 电话号码登录的 ReCatptcha?
问题描述
我解释以下代码块的方式:
window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', {
'size': 'invisible',
'callback': (response) => {
// reCAPTCHA solved, allow signInWithPhoneNumber.
onSignInSubmit();
}
});
是应该有一个 id 为 recaptchaVerifier 的空 div,并且新的 RecaptchaVerifier 对象应该替换该 div。我应该如何做出反应?我尝试创建另一个组件并返回新的 RecaptchaVerifier 以在主页上呈现,但每次我尝试类似的事情时它都会崩溃。
解决方案
文档中提到了这一点,但很容易错过。
要使用不可见的 reCAPTCHA,请创建一个将参数设置为的
RecaptchaVerifier
对象,并指定提交您的登录表单的按钮的 ID。例如:size
invisible
sign-in-button
是登录表单中提交按钮的 CSS ID。要连接 recaptcha,请添加sign-in-button
作为您的 React 组件的提交按钮。例如id="sign-in-button"
……
我发现将登录过程分成两个单独的步骤更容易。如果您有兴趣...继续阅读。
下面是 Firebase Auth Phone Login 的示例实现。您会看到我将登录分为两种方法。第一种方法是登录表单,另一种是使用发送到他们设备的 SMS 验证码登录用户。
const verifyPhoneNumber = async phone => {
const appVerifier = new firebase.auth.RecaptchaVerifier('login-button', { size: 'invisible' });
const phoneNumber = normalizePhone(phone);
return firebase
.auth()
.signInWithPhoneNumber(phoneNumber, appVerifier)
.then(response => response.verificationId);
};
const signInWithVerificationCode = (id, code) => {
const phoneCredential = firebase.auth.PhoneAuthProvider.credential(id, code);
return firebase.auth().signInWithCredential(phoneCredential).then(login);
};
推荐阅读
- c# - 从下拉列表 C# Bot Framework 中获取值
- json - Powershell 将嵌套的 Json 导出为 CSV 作为行
- javascript - 在复杂的数组对象中访问深度嵌套的值
- c# - 如何在 c# 中将两个结构类型变量链接在一起?
- python-3.x - 比较两个数据帧,并生成输出
- node.js - vscode typescript node.js在docker断点集内调试但尚未绑定
- python-3.x - 在 python 中使用 reset_index() 根据日期范围创建额外的行
- sql - 使用 UNION 的查询中的析取词之一的正确术语是什么?
- java - 在 IntelliJ 中搜索特定类层次结构中的类文本
- python - 如何根据多列值连接 Pandas DataFrames