如何使用刷新令牌获取新的访问令牌(Django oauth工具包)?

2024-06-08 19:49:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在django项目中使用django-oauth-toolkit 0.7通过我的网站提供oauth,我已经按照步骤here成功地获得了访问令牌。但是我无法使用刷新令牌获得新的access token(如果访问令牌已过期)。我可以使用consumer client获得访问令牌。但是,我如何才能在我的网站中的url中得到这个,因为当我尝试使用refresh token获取新的访问令牌时,我无法看到哪些参数将进入我的网站。 如有任何帮助,请提前告知,谢谢!

我的accesstoken和refresh令牌如下:

{
  "access_token":"1/fFAGRNJru1FTz70BzhT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
  "refresh_token":"1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI"
}

我用localhost:8000运行我的站点


Tags: 项目djangoclienttokenurl参数hereaccess
2条回答

要获取新的access_token,通过使用现有的refresh_token,您需要将POST请求发送到最初用于获取令牌的相同url(/o/token/,假设为默认url)。现在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来查看标准的相关部分。

你可以通过邮递员的邮寄请求。或者试试这个,它对我有效:

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

相关问题 更多 >