4

現在、django-social-auth を使用して、Google ドライブにアクセスするための google-oauth2 による oauth2 登録を管理しています。extra_arguments にオフライン アクセスを追加しました。したがって、Google は更新トークンを返し、django-social-auth によって保存されます。問題は、django-social-auth がこのリフレッシュ トークンを使用してアクセス トークンを更新しないことです。したがって、アクセス トークンは 1 時間後に期限切れになり、それを使用してオフライン リクエストを実行することはできません。access_token を 24 時間 365 日有効に保ちたいので、データベースを各ユーザーの Google ドライブと同期させておくことができます。

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

refresh_tokenを使用して有効期限が切れるたびに、django-social認証に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 に答える