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

时间:2014-11-06 15:13:02

标签: django oauth-2.0 google-oauth python-social-auth

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

我们都试过了:

  1. 使用/ diconnect / google-oauth2对这些用户进行Diconnect,我们收到了NotAllowedToDisconnect异常,即使从social.pipeline.disconnect.allowed_to_disconnect删除SOCIAL_AUTH_DISCONNECT_PIPELINE后,我们也没有例外,但是当用户重新进行身份验证时,谷歌回应中没有refreh_token
  2. 将approval_prompt = force添加到'account:social:begin'url,但不返回refresh_token
  3. 任何想法都将受到高度赞赏。

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

    由于

1 个答案:

答案 0 :(得分:5)

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

SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {
    'access_type': 'offline',
    'approval_prompt': 'force'
}

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

上的用例示例