Django OAuth 工具包 invalid_grant 错误

问题描述 投票:0回答:5

我有一个问题,我有一个使用 Django OAuth Toolkit 的 Django 应用程序,并且在使用授权代码流程时无法从服务器获取访问令牌。隐式流程工作正常。我在堆栈上没有找到任何有关我的问题的信息,因此如果这是另一个问题的重复,我真的很抱歉。

我可以使用此网址进行授权并获取请求返回,如果我理解正确,则请求令牌已在代码参数中过去。

http://mydomain.se/o/authorize?scope=read+write&state=kalle&redirect_uri=mycallbakurls&response_type=code&client_id=myclientid

当我尝试发帖到 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 

我回来了。


有人可以指出我正确的方向,问题可能是什么吗?

最诚挚的问候马库斯

python django oauth
5个回答
20
投票
"error" : "invalid_grant"

下查找您的代码,并将到期日期更改为遥远的未来。

    


2
投票
Grants

而不是

confidential
中的
public
时,我遇到了同样的问题。这是我解决的方法。

失败的错误消息是
    o/application
  1. 
    
    
{"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"}
  1. 并得到
    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"}
  1. 并在curl请求中发送我的用户名和密码。
    
    
    
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/
    


1
投票


0
投票
{"access_token": "VhMgx59x4PHUPOgSTKMGewsM8JfT58", "token_type": "Bearer", "expires_in": 36000, "refresh_token": "T0BhP1lFvyiS9c5rH6xHqt4uBItAS1", "scope": "read write groups"}

是错误的。

    


0
投票

如果您尝试在终端中运行curl cmd,这会起作用。

但是,如果您尝试在邮递员中运行它,您可能会收到“invalid_grant”错误,因为它们需要以不同的格式发送数据。

您可以尝试从Oauth文档中复制curl命令,然后在postman中导入curl cmd,它将被正确添加,然后尝试运行它。

它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.