我有一个问题,我有一个使用 Django OAuth Toolkit 的 Django 应用程序,并且在使用授权代码流程时无法从服务器获取访问令牌。隐式流程工作正常。我在堆栈上没有找到任何有关我的问题的信息,因此如果这是另一个问题的重复,我真的很抱歉。
我可以使用此网址进行授权并获取请求返回,如果我理解正确,则请求令牌已在代码参数中过去。
当我尝试发帖到 http://mydomain.se/o/token/ 与:
grant_type = authorization_code
code = code from authorize call
client_id = my clientId
client_secret = my client secret
redirect_uri = my callback url
我回来了。
有人可以指出我正确的方向,问题可能是什么吗?
最诚挚的问候马库斯
"error" : "invalid_grant"
下查找您的代码,并将到期日期更改为遥远的未来。
Grants
而不是
confidential
中的 public
时,我遇到了同样的问题。这是我解决的方法。失败的错误消息是
o/application
{"error": "invalid_grant"}
curl -X POST -d "client_id=17U5rPQM1HDtF3hR8sIRP6pmzn033EbnwJJ6lNCx& client_secret=D6bSgR8qyIwDl5SyF4kJ0wBJq56NXMUY9LVjD6NZTxnAh4ylTD2YBJxDBaLahpabZMGowWpVTYn6UW8Yq1GB6nAwm7euXZZxXaCxQLKK2KDNrfz4JSavFCKekc1LOCQz&grant_type=authorization_code&code=EaBVzVEjqbsU0GKl5gXK7ArrfsSiTJ&redirect_uri=http%3A%2F%2Flocalhost%2Foauth_client%2F" http://localhost:8080/o/token/
然后将我的客户类型更改为
{"error": "invalid_grant"}
public
。
Success
curl -X POST -d "client_id=17U5rPQM1HDtF3hR8sIRP6pmzn033EbnwJJ6lNCx&client_secret=D6bSgR8qyIwDl5SyF4kJ0wBJq56NXMUY9LVjD6NZTxnAh4ylTD2YBJxDBaLahpabZMGowWpVTYn6UW8Yq1GB6nAwm7euXZZxXaCxQLKK2KDNrfz4JSavFCKekc1LOCQz&grant_type=authorization_code&code=1ZxQjLN4QbpjaWgbztnOIe3K4bgxKj&redirect_uri=http%3A%2F%2Flocalhost%2Foauth_client%2F" http://localhost:8080/o/token/
再次改回
{"access_token": "KstIqSnt9Mj4ITmCGRJpTYW3W59nRv", "token_type": "Bearer", "expires_in": 36000, "refresh_token": "uJzJal9YSpirSax6vW2Di43ojRGvRV", "scope": "read write groups"}
Confidential
curl -X POST -d "client_id=17U5rPQM1HDtF3hR8sIRP6pmzn033EbnwJJ6lNCx&client_secret=D6bSgR8qyIwDl5SyF4kJ0wBJq56NXMUY9LVjD6NZTxnAh4ylTD2YBJxDBaLahpabZMGowWpVTYn6UW8Yq1GB6nAwm7euXZZxXaCxQLKK2KDNrfz4JSavFCKekc1LOCQz&grant_type=authorization_code&code=UJnq1xfKULOUD0m2Oxb26NYmnuxKMn&redirect_uri=http%3A%2F%2Flocalhost%2Foauth_client%2F" -u'admin:pass' http://localhost:8080/o/token/
{"access_token": "VhMgx59x4PHUPOgSTKMGewsM8JfT58", "token_type": "Bearer", "expires_in": 36000, "refresh_token": "T0BhP1lFvyiS9c5rH6xHqt4uBItAS1", "scope": "read write groups"}
是错误的。
如果您尝试在终端中运行curl cmd,这会起作用。
但是,如果您尝试在邮递员中运行它,您可能会收到“invalid_grant”错误,因为它们需要以不同的格式发送数据。
您可以尝试从Oauth文档中复制curl命令,然后在postman中导入curl cmd,它将被正确添加,然后尝试运行它。
它对我有用。