强制谷歌通过python社会认证刷新令牌

elm*_*ami 4 django oauth-2.0 google-oauth python-social-auth

我们正在开发一个依赖于PSA(0.2.1)的项目,用于使用google oauth2(离线)进行身份验证.不知怎的,我们失去了一些用户的刷新令牌,我们想强制这些用户重新认证,这样我们就可以从谷歌获得新的刷新令牌

我们都试过了:

  1. Diconnect使用/ diconnect /谷歌的oauth2的用户,我们得到了一个NotAllowedToDisconnect例外,甚至删除后social.pipeline.disconnect.allowed_to_disconnectSOCIAL_AUTH_DISCONNECT_PIPELINE,我们有没有异常,但是当用户重新认证,有在谷歌的反应没有refreh_token
  2. 将approval_prompt = force添加到'account:social:begin'url,但不返回refresh_token

任何想法都将受到高度赞赏.

更新:我们尝试使用{% url 'account:social:begin' 'google-oauth2' %}?approval_prompt=force&next=/强制某些用户(缺少令牌)的approval_prompt,但它似乎对google oauth没有任何影响.

谢谢

oma*_*mab 5

使用此设置可以解决问题:

SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {
    'access_type': 'offline',
    'approval_prompt': 'force'
}
Run Code Online (Sandbox Code Playgroud)

用例示例http://psa.matiasaguirre.net/docs/use_cases.html#re-prompt-google-oauth2-users-to-refresh-the-refresh-token