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

AWS Cognito OAuth/Token端点返回invalid_request问题求助

排查AWS Cognito OAuth/Token端点返回"invalid_request"的问题

针对你的代码和问题,从以下几个方向逐一排查:

  • Base64编码的潜在问题
    你用btoa()对clientId:clientSecret进行编码,但btoa()仅支持ASCII字符集,若你的客户端密钥包含非ASCII字符或URL特殊字符(如+、/、=),会导致编码结果不符合Basic Auth的要求。
    建议替换编码方式:

    • 若在Node.js环境,改用Buffer.from(${this.clientId}:${this.clientSecret}).toString('base64');
    • 若在浏览器环境,先对clientId和clientSecret分别用encodeURIComponent()编码,再拼接后执行btoa():
      const encodedClientId = encodeURIComponent(this.clientId);
      const encodedClientSecret = encodeURIComponent(this.clientSecret);
      const credentials = btoa(`${encodedClientId}:${encodedClientSecret}`);
      
  • 严格匹配redirect_uri
    Cognito对redirect_uri的匹配要求完全一致,包括大小写、末尾斜杠、协议(http/https)。确认你在token请求中传入的redirect_uri,和获取authorization code时使用的redirect_uri完全相同,哪怕只差一个斜杠都会触发错误。

  • authorization code的有效性
    Cognito的authorization code仅能使用一次,且有效期为5分钟。若你重复使用同一个code,或code已过期,都会返回invalid_request。确保你传入的code是刚获取的、未被使用过的。

  • 客户端类型配置
    确认你的用户池客户端被设置为机密客户端(Confidential Client)。如果误配置为公共客户端(Public Client),Cognito会拒绝带有客户端密钥的Basic Auth请求,直接返回错误。

  • 请求头与参数检查
    检查是否有axios拦截器或其他逻辑修改了请求头,确保Content-Type严格为application/x-www-form-urlencoded,且Authorization头的格式正确(Basic 后紧跟Base64编码的凭证,无多余空格)。

  • 参数完整性
    确认所有必填参数都已正确传入:grant_type为authorization_code,client_id、redirect_uri、code的值都非空且格式正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:17:40