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

Max*_*son 4 python django django-socialauth oauth-2.0 google-drive-api

我目前正在使用django-social-auth管理oauth2注册google-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
Run Code Online (Sandbox Code Playgroud)

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

mro*_*ney 8

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