2014-11-06 206 views
4

我们正在开发一个项目,该项目依靠PSA(0.2.1)进行谷歌oauth2认证(脱机)。不知怎的,我们失去了一些用户的一些刷新令牌,我们想迫使这些用户重新进行身份验证,所以我们可以从谷歌强制谷歌通过python社交授权刷新令牌

得到新的刷新令牌

我们都尝试:

  1. Diconnect这些用户使用/ diconnect/google-oauth2,我们得到了NotAllowedToDisconnect异常,即使在从SOCIAL_AUTH_DISCONNECT_PIPELINE中删除social.pipeline.disconnect.allowed_to_disconnect后,我们也没有例外,但是当用户重新认证时,google响应中没有refreh_token
  2. add approval_prompt = force to'account:social:开始“url,但它不会返回refresh_token

任何想法将不胜感激。

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

感谢

回答

4

使用此设置的伎俩:以``SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS``,线索:在http://psa.matiasaguirre.net/docs/use_cases.html#re-prompt-google-oauth2-users-to-refresh-the-refresh-token

+0

实际添加{ '力' 'approval_prompt'}

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

使用情况实例每当现有用户想要登录时,谷歌会一直要求他离线访问,我们只希望失去refresh_token的用户被要求提供这个 – elmkarami 2014-11-07 18:18:16

+0

但是直到您确定当前使用情况,您才能知道它r并且它是DB中的关联。 – omab 2014-11-07 20:32:56

+0

你是对的,那么是否有一个技巧将一个额外的参数传递给PSA,然后将这个参数传递给提供者一个运行时?那会很好 – elmkarami 2014-11-07 20:56:29