如何在任务/Promise执行完成后禁用Firebase reCAPTCHA?
解决reCAPTCHA任务完成后未自动禁用的问题
当前代码实现:
window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', { 'size': 'invisible', 'callback': (response) => { } });
问题:函数主体任务执行完成后,reCAPTCHA仍保持启用状态,未按预期禁用。
解决方法:
- 任务执行完成后,手动调用reCAPTCHA实例的
reset()方法,该方法会重置验证码状态,实现禁用效果:// 在任务完成的逻辑末尾添加 window.recaptchaVerifier.reset(); - 若用于Firebase手机号登录流程,可在登录成功/失败的回调中调用重置方法,确保无论结果如何都能禁用验证码:
firebase.auth().signInWithPhoneNumber(phoneNumber, window.recaptchaVerifier) .then((confirmationResult) => { // 登录流程完成后重置 window.recaptchaVerifier.reset(); }) .catch((error) => { // 错误场景下也重置,避免验证码持续激活 window.recaptchaVerifier.reset(); }); - 检查任务完成的逻辑是否正常触发,确认
reset()方法没有因代码报错、逻辑分支未覆盖等情况而未执行。
内容的提问来源于stack exchange,提问作者Sami Khan
相关产品推荐
相关产品推荐

