我有一点问题,我有一个使用Django OAuth Toolkit的django应用程序,在使用授权代码流时我无法从服务器获取访问令牌。隐式流程工作正常。我在堆栈上找不到关于我的问题的任何内容,所以如果这是另一个问题的副本,我真的很抱歉。
我可以使用此url进行授权并获取请求,如果我理解正确,请求令牌已经过了代码参数。
然后我尝试发帖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"
。
有人可以指出我正确的方向是什么问题吗?
最好的问候Markus
答案 0 :(得分:3)
This can happen if the code is expired. They expire pretty quickly by default. You can look up your code in the Django admin under Grants
and change the expiration date to far in the future.
答案 1 :(得分:1)
我发现我无法单独提出请求。当我建立自己的客户端并测试所有工作正常。
答案 2 :(得分:1)
当我的客户端类型为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请求中发送我的用户名和密码。 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"}
答案 3 :(得分:0)
检查以确认您正确设置了详细信息。例如,在我的情况下,我的INotifyPropertyChanged
是错误的。