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

如何在Postman的OAuth 2.0令牌请求中移除请求体中的空client_secret字段

如何在Postman的OAuth 2.0令牌请求中移除请求体中的空client_secret字段

哈哈,这个问题我之前踩过一模一样的坑!明明没在Postman里配置过客户端密钥,它却硬要把空的client_secret字段塞进令牌请求的body里,对接AWS Cognito这种对参数格式敏感的服务时,直接就触发500错误了,太闹心。结合你的场景(授权码能正常拿到,就是/token端点失败),给你几个实测有效的解决办法:

  • 优先用这个:调整OAuth 2.0的客户端认证方式
    打开Postman的授权设置面板,选择OAuth 2.0类型后,点击"Configure New Token"展开配置项,找到「Client Authentication」(客户端认证)的下拉菜单。默认可能是Send client credentials in body,你把它改成Send as Basic Auth header就行。
    这样Postman会把client_id通过HTTP Basic Auth的方式传递(格式是base64编码的client_id:,密码部分留空),完全不会在请求体里出现client_secret字段,刚好适配AWS Cognito对公共客户端(不需要密钥的客户端)的令牌请求要求。

  • 临时测试用:手动移除请求体里的空字段
    如果赶时间临时测,可以直接切换到请求的「Body」标签,选x-www-form-urlencoded或者form-data模式,找到那个空值的client_secret字段,直接删掉就好。不过要注意,下次重新生成令牌时Postman可能会自动把这个字段加回来,所以适合临时救急。

  • 长期自动化:用前置脚本自动清理空字段
    要是你需要长期稳定解决这个问题,可以给请求加一段Pre-request Script,让Postman每次发请求前自动移除空的client_secret。脚本代码如下:

    if (pm.request.body && pm.request.body.formdata) {
        const formData = pm.request.body.formdata;
        for (let i = formData.members.length - 1; i >= 0; i--) {
            if (formData.members[i].key === 'client_secret' && !formData.members[i].value) {
                formData.members.splice(i, 1);
            }
        }
    }
    

    把这段代码粘贴到请求的「Pre-request Script」标签里,以后每次发令牌请求前,脚本都会自动检查并清理掉空的client_secret字段,一劳永逸。

备注:内容来源于stack exchange,提问作者Shuzheng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 11:59:28