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

ASP.NET Core请求Facebook长时令牌遇“验证码格式无效”错误排查

问题解答

错误含义

Invalid verification code format 本质是Facebook判定你传入的授权码(authorizationCode)不符合预期格式,或是授权码本身无效(Facebook的错误提示有时会将无效码归类为格式错误)。

常见原因及排查方向

  • 授权码已过期/重复使用:Facebook的短时授权码仅支持单次使用,且有效期仅约10分钟。如果前端返回的码已经被用过,或者超过有效期,就会触发这个错误。
  • Redirect URI不匹配:兑换长时令牌时的redirect_uri必须与前端发起Facebook登录请求时使用的redirect_uri完全一致——包括大小写、末尾斜杠、甚至携带的参数(如果有的话)。哪怕细微差异,FB都会拒绝请求,有时就会返回格式错误。
  • 授权码传输过程中被篡改/截断:检查前端传递的authorizationCode是否完整,有没有因为前端编码错误(比如重复URL编码)、或者HTTP传输时丢失特殊字符(如#、&)导致后端接收到的码不完整。

与商业验证/应用访问验证的关系

这个错误和Facebook商业验证、应用访问验证没有直接关联。这两类验证未通过时,通常会返回权限受限、API调用被拒绝类的错误,而非授权码格式错误。只有当你的应用处于沙盒模式且未添加测试用户时,可能会影响登录流程,但不会直接触发这个格式错误。

代码优化建议

Facebook的令牌兑换端点推荐使用POST请求传递参数(而非手动拼接GET请求的QueryString),这样能避免编码遗漏、参数过长等问题:

var httpClient = _httpClientFactory.CreateClient();

var formData = new FormUrlEncodedContent(new Dictionary<string, string>
{
    { "client_id", clientId },
    { "redirect_uri", redirectUri },
    { "client_secret", clientSecret },
    { "code", authorizationCode },
    { "state", companyId }
});

var tokenResponse = await httpClient.PostAsync(FacebookTokenUrl, formData);

内容的提问来源于stack exchange,提问作者Karol Trzaska

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:15:57