2012-10-16 35 views
4

我目前使用django-social-auth來管理oauth2註冊,並通過google-oauth2訪問Google雲端硬盤。我已添加離線訪問我的extra_arguments。因此,Google會返回一個刷新令牌,並通過django-social-auth進行存儲。問題是,django-social-auth從不使用此刷新令牌來更新訪問令牌。因此訪問令牌在一小時後過期,我無法使用它執行脫機請求。我想保留access_token全天候有效,這樣我可以保持我的數據庫與每個用戶Google Drive同步。使用django-social-auth(omab)自動刷新訪問令牌

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的社會權威性每次期滿使用refresh_token時間更新的access_token。我很想看到如何解決這個問題的例子。

回答

7

它看起來像UserSocialAuth對象now have a .refresh_token() method,它允許您使用.tokens並獲取更新的令牌。

+0

對不起,這是否意味着這個'.refresh_token'會在'access token'過期時自動調用?或者我需要手動以某種方式知道該令牌已過期? – user3479125

+0

@ user3479125我相信它應該會自動刷新,但是這也可以讓你捕捉到這樣的異常,如果它沒有在某些邊緣情況下刷新自己:) – mrooney

相關問題