使用django-social-auth(omab)自动刷新访问令牌

时间:2012-10-16 10:30:26

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

我目前正在使用django-social-auth通过google-oauth2管理oauth2注册以访问Google云端硬盘。我已经添加了对extra_arguments的离线访问。因此,Google会返回刷新令牌,并由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。我很想看到如何解决这个问题的一个例子。

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:1)

目前django-social-auth无法直接实现(我已经提出了追踪它的票https://github.com/omab/django-social-auth/issues/492),同时this snippet将完成工作,只需要改善了一点,以满足您的需求。