【问题标题】:Django OAuth Toolkit invalid_grant errorDjango OAuth 工具包 invalid_grant 错误
【发布时间】:2015-01-19 07:09:55
【问题描述】:

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

我可以使用这个 url 授权并让请求返回,如果我理解正确,请求令牌在代码参数中是过去的。

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 

我收到"error" : "invalid_grant" 回复。

有人能给我指出正确的方向吗?

最好的问候马库斯

【问题讨论】:

    标签: python django oauth


    【解决方案1】:

    检查以验证您是否正确设置了详细信息。例如我的client_id 是错误的。

    【讨论】:

      【解决方案2】:

      如果代码过期,可能会发生这种情况。默认情况下,它们很快就会过期。您可以在 Grants 下的 Django 管理中查找您的代码,并将到期日期更改为远在未来。

      【讨论】:

        【解决方案3】:

        当我的客户端类型是 confidential 而不是 o/application 中的 public 时,我遇到了同样的问题。这是我解决它的方法。

        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. 再次改回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"}

        【讨论】:

          【解决方案4】:

          我发现我不能单独做请求。当我建立自己的客户端并进行测试时,一切对我来说都很好。

          【讨论】:

          • 嗨!我面临着完全相同的问题。你能帮我解释一下你是如何解决的吗?我已经尝试了很多事情,但我被这个问题所困扰):
          猜你喜欢
          • 2020-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-01
          • 2014-04-02
          • 2019-04-16
          • 2018-08-08
          • 1970-01-01
          相关资源
          最近更新 更多