4

我目前正在使用 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。我很想看到一个如何解决这个问题的例子。

4

2 回答 2

8

看起来 UserSocialAuth 对象现在有一个 .refresh_token() 方法,它允许您使用 .tokens 并获取更新的令牌。

于 2013-01-26T02:24:43.100 回答
1

目前没有办法直接在 django-social-auth 中实现(我已经提出了跟踪它的票https://github.com/omab/django-social-auth/issues/492),同时这个片段会做工作,它只需要改进一点以满足您的需求。

于 2012-10-17T16:19:39.903 回答