django - 授予访问 token 类型authorization_code 出现错误 invalid_client

标签 django oauth-2.0 django-rest-framework

我使用 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 "...

授权代码授予类型是一个两步流程。

  1. 在资源所有者允许您的客户端后,您会立即获得授权代码。
  2. 您可以使用授权代码获取访问 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/

相关文章:

authentication - 使用动态范围在 Multi-Tenancy 应用程序中实现 OAuth 2

python - 如何自定义 Django Rest Framework 序列化器输出?

python - 如何将值/参数从 HTML 传递到 Django View ?

python - 将 python 脚本与 django 集成

django - 如何对 Django 数据库迁移进行单元测试?

python - Djoser user_list 设置AllowAny 不起作用

java - 如何在 Django RESTful API 上解决 Retrofit @POST 上的 404?

django - 静态文件未在 AWS Lightsail 上提供

php - Google API - 使用 PHP 获取联系人列表

Spring-Security OAuth2 设置 - 无法找到 oauth2 命名空间处理程序