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

如何在Postman中通过表单请求传递client_id和client_secret生成Access Token?

解决Django OAuth Toolkit中用form-data传递client_id和client_secret的问题

嗨,我刚好有过类似的实践经验,给你两种靠谱的方案,都能满足你用form-data请求获取access_token的需求:

方案1:通过HTTP Basic Auth传递客户端凭证

Django OAuth Toolkit默认支持用HTTP Basic Authentication来验证客户端身份,这也是OAuth2密码模式的标准做法之一。具体操作是:

  • 把你的client_id和client_secret用冒号拼接成字符串:client_id:client_secret
  • 对这个字符串做Base64编码(你可以用在线工具或者Postman自动处理)
  • 在请求头里添加Authorization字段,值为Basic 你的Base64编码结果

在Postman里的操作很简单:

  1. 选择POST请求,地址填http://127.0.0.1:3333/auth/token/
  2. 切换到Authorization标签,类型选Basic Auth
  3. 分别填入client_id和client_secret,Postman会自动帮你生成Authorization头
  4. 切换到Body标签,选form-data,添加以下字段:
    • grant_type:值填password
    • username:你的测试用户名
    • password:你的测试密码

对应的curl请求(用form-data格式)可以这么写:

curl -X POST \
  http://127.0.0.1:3333/auth/token/ \
  -H 'Authorization: Basic 你的Base64编码字符串' \
  -F 'grant_type=password' \
  -F 'username=你的用户名' \
  -F 'password=你的密码'

方案2:直接把client_id和client_secret放到form-data字段里

如果你希望所有参数都在form-data里统一传递,Django OAuth Toolkit也支持这种方式(需要确保你的OAuth2客户端配置允许这种认证方式)。只需要在form-data里额外添加两个字段:

  • client_id:你的客户端ID
  • client_secret:你的客户端密钥

Postman里的操作:

  1. 同样是POST请求到http://127.0.0.1:3333/auth/token/
  2. 切换到Body标签,选form-data,添加以下所有字段:
    • grant_type:password
    • username:你的测试用户名
    • password:你的测试密码
    • client_id:你的客户端ID
    • client_secret:你的客户端密钥

对应的curl请求:

curl -X POST \
  http://127.0.0.1:3333/auth/token/ \
  -F 'grant_type=password' \
  -F 'username=你的用户名' \
  -F 'password=你的密码' \
  -F 'client_id=你的客户端ID' \
  -F 'client_secret=你的客户端密钥'

注意事项

  • 第二种方案需要确保你的OAuth2客户端的client_type是confidential(默认就是这个类型),并且Django OAuth Toolkit的配置里没有禁用表单式客户端认证
  • 如果你要生成API文档,第二种方案可能更直观,因为所有参数都能在表单里清晰展示,方便其他开发者理解和测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:16:15