我使用Django与python-social-auth
一起使用googleoauth2对我的用户进行身份验证,并使用Youtube API。在
我想实现的是要求他们只需登录并授权一次,并且能够根据我的需要使用他们的凭证。这是不可能的,因为大约一个小时后,他们将过期,我需要用户重新授权我的应用程序,以获得新的凭据。在
我假设解决方案是定期刷新凭据,但我找不到任何可靠的指南来指导如何执行此操作。在
我当前的配置是:
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'the_key'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'the_secret'
SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPE = ["https://www.googleapis.com/auth/youtube.readonly", "https://www.googleapis.com/auth/yt-analytics.readonly"]
SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {
'access_type': 'offline',
'approval_prompt': 'force'
}
此外,授权用户还具有以下附加功能:
^{pr2}$我尝试用下面的代码刷新它,但由于它仍然过期,我认为这不是正确的方法:
social_user = UserSocialAuth.objects.get(...) # Fetch the instance
social_user.refresh_token(load_strategy()) # Returns "None"
经过更多的测试后,我发现使用
refresh_token
确实可以刷新它一个小时的使用时间,所以我需要做的是让一个cron作业运行Django命令在过期之前刷新它们,如下所示:不过,我真正想要的是能够像其他社交网络(Instagram、Twitter、Facebook)一样,按需更新代币,只需一次登录,证书永不过期。在
相关问题 更多 >
编程相关推荐