You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC集成Firebase短信验证码遇reCAPTCHA SITE_MISMATCH错误求助

解决Firebase sendVerificationCode API的CAPTCHA SITE_MISMATCH错误

错误根源分析

CAPTCHA_CHECK_FAILED : Recaptcha verification failed - SITE_MISMATCH 错误的核心原因是reCAPTCHA令牌的生成环境与Firebase验证时的站点不匹配,或者使用了不符合Firebase要求的reCAPTCHA令牌。

分步解决方案

1. 修正代码中的URL语法错误

你的代码里URL拼接存在语法错误,多余了一个闭合大括号,这会导致请求的API地址无效:
原错误代码:

var url = $"https://www.googleapis.com/identitytoolkit/v3/relyingparty/sendVerificationCode?key={_configuration["Firebase:WebApiKey]}"";

修正后:

var url = $"https://www.googleapis.com/identitytoolkit/v3/relyingparty/sendVerificationCode?key={_configuration["Firebase:WebApiKey"]}";

2. 验证reCAPTCHA站点密钥的域名配置

  • 登录Google reCAPTCHA控制台,找到你正在使用的Site Key对应的项目。
  • 检查“域名”列表,确保当前项目的域名(本地调试填localhost,生产环境填实际域名,注意不要加http://、https://或端口号,非标准端口除外)已被添加。
  • 确认没有拼写错误,比如把localhost写成localost,或者域名末尾多了斜杠。

3. 确保前后端reCAPTCHA密钥配对

  • 前端生成reCAPTCHA令牌时使用的Site Key,必须和后端在Firebase/reCAPTCHA控制台中对应的Secret Key属于同一项目,不能混用不同项目的密钥。
  • 可以在reCAPTCHA控制台中查看每个Site Key对应的Secret Key,确认配对关系。

4. 使用Firebase Auth SDK生成合规的reCAPTCHA令牌(关键)

Firebase的sendVerificationCode API不支持独立的Google reCAPTCHA v3令牌,必须使用Firebase Auth集成的reCAPTCHA流程生成令牌:

  • 前端引入Firebase Auth SDK并初始化应用。
  • 创建Firebase reCAPTCHA验证实例:
    const recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container', {
      size: 'invisible',
      callback: (response) => {
        // reCAPTCHA验证完成
      }
    });
    
  • 通过Firebase Auth获取验证令牌,再传递给后端:
    firebase.auth().signInWithPhoneNumber(phoneNumber, recaptchaVerifier)
      .then((confirmationResult) => {
        // 这里生成的令牌会包含符合Firebase要求的reCAPTCHA信息
        // 将相关令牌传给后端调用sendVerificationCode API
      });
    

如果必须通过后端调用sendVerificationCode,确保传递的recaptchaToken是Firebase Auth流程生成的,而非独立reCAPTCHA服务生成的。

内容的提问来源于stack exchange,提问作者Mohan Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 23:14:51