【问题标题】:Automatically refresh access token with django-social-auth (omab)使用 django-social-auth (omab) 自动刷新访问令牌
【发布时间】:2012-10-06 10:25:01
【问题描述】:

我目前正在使用 django-social-auth 来管理 google-oauth2 的 oauth2 注册,以访问 Google Drive。我添加了对我的 extra_arguments 的离线访问。因此谷歌返回一个刷新令牌,并由 django-social-auth 存储。问题是 django-social-auth 从不使用此刷新令牌来更新访问令牌。因此访问令牌在一小时后过期,我不能用它来执行离线请求。我想保持 access_token 24/7 有效,这样我就可以让我的数据库与每个用户的 Google Drive 同步。

GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {'access_type':'offline'}
GOOGLE_OAUTH_EXTRA_SCOPE = ['https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/userinfo.profile']

SOCIAL_AUTH_USER_MODEL = 'accounts.GoogleDriveUser'
SOCIAL_AUTH_EXTRA_DATA = True
SOCIAL_AUTH_SESSION_EXPIRATION = False

有没有办法强制 django-social auth 每次使用 refresh_token 过期时更新 access_token。我很想看到一个如何解决这个问题的例子。

【问题讨论】:

    标签: python django oauth-2.0 google-drive-api django-socialauth


    【解决方案1】:

    它看起来像 UserSocialAuth 对象now have a .refresh_token() method,它允许您使用 .tokens 并获取更新的令牌。

    【讨论】:

    • 对不起,这是否意味着当access token 到期时会自动调用此.refresh_token?或者我手动需要以某种方式知道令牌过期了? span>
    • @user3479125 我相信它应该会自动刷新,但是如果在某些边缘情况下没有,这也可以让您捕获此类异常并刷新自己:)
    【解决方案2】:

    目前没有办法直接在 django-social-auth 中实现(我已经提出了跟踪它的票 https://github.com/omab/django-social-auth/issues/492),同时 this snippet 将完成这项工作,只需要稍微改进一下即可满足您的需求。

    【讨论】:

      猜你喜欢
      • 2017-05-18
      • 1970-01-01
      • 2021-08-24
      • 2018-07-18
      • 1970-01-01
      • 2016-09-04
      • 1970-01-01
      • 2014-08-04
      • 2015-10-05
      相关资源
      最近更新 更多