django - 强制谷歌通过 python 社交身份验证刷新 token

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

我们正在开发一个依赖 PSA (0.2.1) 进行 google oauth2(离线)身份验证的项目。不知何故,我们丢失了一些用户的刷新 token ,我们希望强制这些用户重新进行身份验证,以便我们可以从 Google 获取新的刷新 token

我们都尝试过:

  1. 使用/diconnect/google-oauth2 断开这些用户的连接,我们遇到了 NotAllowedToDisconnect 异常,即使从 SOCIAL_AUTH_DISCONNECT_PIPELINE 中删除 social.pipeline.disconnect.allowed_to_disconnect 后,我们也没有得到任何结果异常,但是当用户重新进行身份验证时,Google 响应中没有 refreh_token
  2. 将approval_prompt=force添加到“account:social:begin”网址,但不会返回refresh_token

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

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

谢谢

最佳答案

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

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

关于django - 强制谷歌通过 python 社交身份验证刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26782827/

相关文章:

python - Django静态文件问题

oauth-2.0 - 跳过用户同意屏幕 oauth2

oauth-2.0 - 仅从 Google Sign-In for Websites 请求 'openid' 范围

python - 访问相关对象的正确方法

python - 如何在 Django 之外访问 Django DB 和 ORM

java - Spring启动OAuth2实现: NoSuchBeanDefinitionException: No qualifying bean of type AuthenticationManager

c# - 如何在服务器端验证我的自定义 Oauth2 访问 token

oauth - 为什么 Google 会为 Native 应用程序提供客户端密码?

vba - 使用 VBA 和 Oauth2 交换 Google Calendar API 的访问 token 的授权代码

python - 用于指定数据库的 Django queryset "using()"方法不适用于 related_name 查询