我使用 django-oauth2-provider 构建授权服务器。当我尝试使用此命令获取 access_token 时:
curl -d "client_id=513204402d4b4f4d62e2&grant_type=authorization_code&response_type=code" http://127.0.0.1:8000/oauth2/access_token
我收到错误:invalid_client
我已经创建了我的客户端,client_type 是 secret 我该如何修复它?
最佳答案
如果您的客户端是 secret 的,您必须进行身份验证才能颁发访问 token 。
我认为它是一个密码客户端。您只需在 POST 请求中添加 client_secret=CLIENT_SECRET_HERE
参数或在授权 header 中设置客户端凭据即可。
示例:
curl -d "client_id=CLIENT_ID_HERE&client_secret=CLIENT_SECRET_HERE&...
或
curl --user CLIENT_ID_HERE:CLIENT_SECRET_HERE -d "...
授权代码授予类型是一个两步流程。
- 在资源所有者允许您的客户端后,您会立即获得授权代码。
- 您可以使用授权代码获取访问 token 。
您正在尝试发送 POST
请求,因此我想如果您已经有授权码的话。
您收到 invalid_request
是因为您没有在 curl 命令中设置 code
参数:
curl -X POST -d "client_id=CLIENT_ID_HERE&client_secret=CLIENT_SECRET_HERE&grant_type=authorization_code&code=AUTHORIZATION_CODE_HERE&redirect_uri=REDIRECT_URI_HERE" http://127.0.0.1:8000/oauth2/access_token
关于django - 授予访问 token 类型authorization_code 出现错误 invalid_client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26358193/