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

Zoho C# SDK服务端应用认证报invalid_code错误该如何解决?

问题原因与解决方法

核心错误点

你遇到的invalid_code报错、初始化阶段未触发TokenStore.SaveToken()调用,本质是OAuth授权参数配置错误+token存储逻辑不符合SDK要求,具体可按以下步骤修正:

修正步骤

  1. 清空无效缓存
    先删除你自定义CustomTokenStore中所有已存储的token数据,避免SDK优先读取旧的无效token跳过正常授权流程。
  2. 修正OAuthToken构造逻辑
    你当前构造OAuthToken时存在两处关键错误:
  • 使用TokenType.GRANT类型时,最后一个参数redirect URI传了空值,授权码是和Zoho开发者后台填写的回调地址绑定的,不一致会直接导致授权码验证失败
  • 授权码(Grant Token)是一次性、有效期仅几分钟的凭证,你手动存储的授权码大概率已经过期或被使用过,本身就是无效凭证
    根据你的使用场景二选一调整:

场景1:使用授权码首次兑换token

Token token = new OAuthToken(
      "你的Zoho应用Client ID",
      "你的Zoho应用Client Secret",
      "刚从Zoho授权回调地址获取的未使用授权码",
      TokenType.GRANT,
      "和Zoho开发者后台填写的完全一致的回调地址"); // 禁止留空

场景2:后台服务长期调用(推荐)

直接使用长期有效的Refresh Token构造,不需要依赖临时授权码:

Token token = new OAuthToken(
      "你的Zoho应用Client ID",
      "你的Zoho应用Client Secret",
      "你的Zoho账号Refresh Token",
      TokenType.REFRESH,
      string.Empty);
  1. 删除手动存储token的代码
    不要自行调用tokenStore.SaveToken(user, token),OAuthToken构造阶段生成的对象没有access_token、过期时间等必要字段,手动存储的是无效token,SDK会在授权兑换成功后自动调用SaveToken方法存储有效token。
  2. 验证数据中心配置
    如果你的Zoho账号是中国区账号,初始化时的Environment不能填https://www.zohoapis.com,需要替换为中国区端点https://www.zohoapis.com.cn,否则授权请求会发往海外站点导致验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:30:04