我使用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是Confidential 我该如何解决?
答案 0 :(得分:2)
如果您的客户是保密的,您必须进行身份验证才能发出访问令牌。
我认为它是一个密码客户端。您只需在POST请求中添加client_secret=CLIENT_SECRET_HERE
参数,或在授权标头中设置客户端凭据。
示例:
curl -d "client_id=CLIENT_ID_HERE&client_secret=CLIENT_SECRET_HERE&...
或
curl --user CLIENT_ID_HERE:CLIENT_SECRET_HERE -d "...
授权代码授权类型是两步流程。
您正在尝试发送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