如何使用刷新令牌获取新的访问令牌(django-oauth-toolkit)?

时间:2014-11-13 07:00:55

标签: python django oauth

我在我的django项目中使用django-oauth-toolkit 0.7通过我的网站提供oauth,我已按照步骤here成功获得了访问令牌。但我无法获得新的{{1}使用刷新令牌(如果访问令牌已过期)。我能够使用consumer client获取访问令牌。但是我怎么能在我的网站上用我的网址得到这个,因为当我试图获得带有刷新令牌的新访问令牌时,我无法看到我的网站会有什么参数。 任何帮助都会得到满足,提前致谢!

我的accessstoken和刷新令牌是这样的:

access token

我正在使用{ "access_token":"1/fFAGRNJru1FTz70BzhT3Zg", "expires_in":3920, "token_type":"Bearer", "refresh_token":"1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }

运行我的网站

2 个答案:

答案 0 :(得分:25)

要获得新的access_token,请使用现有的refresh_token,您需要向首先获取令牌的同一网址发送POST请求(/o/token/,假设默认网址)。 grant_type现在为refresh_token,您还需要使用您的客户凭据进行身份验证,因为您已获得了一些凭据。

总结一下: curl -X POST -d "grant_type=refresh_token&client_id=<your_client_id>&client_secret=<your_client_secret>&refresh_token=<your_refresh_token>" http://localhost:8000/o/token/

如果您想了解更多信息,可以查看此link以查看标准的相关部分。

答案 1 :(得分:2)

您可以在POSTMAN中传递发布请求。或者尝试一下,它对我有用:

curl -X POST -H 'Authorization: Basic your_application_id' -d 'refresh_token=your_refresh_token&grant_type=refresh_token' localhost:3000/o/token

{
    "token_type":"bearer",
    "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiVlx1MDAxNcKbwoNUwoonbFPCu8KhwrYiLCJpYXQiOjE0NDQyNjI4NjYsImV4cCI6MTQ0NDI2Mjg4Nn0.Dww7TC-d0teDAgsmKHw7bhF2THNichsE6rVJq9xu_2s",
    "expires_in":20,
    "refresh_token":"7fd15938c823cf58e78019bea2af142f9449696a"
}

尝试这个Link