python - 如何让用户退出使用 Google OAuth2 登录的应用程序?

标签 python flask google-oauth google-authentication google-api-python-client

我在我的网络服务器应用程序中实现了 Google OAuth2 登录流程(使用 python/flask)。我的应用程序将用户重定向到 Google,他们在其中使用 Google 凭据登录并返回到我的应用程序。

我在决定如何为此应用程序实现注销功能时遇到问题。我可以清除应用程序的 session cookie,但这不会让用户退出他们的 Google a/c。因此,如果用户在注销后点击登录,重定向将转到 Google,并且由于用户仍然登录到 Google,他们会自动(甚至没有被提示重新输入凭据)重新登录到我的应用程序。

This SO answer here似乎很好地概述了为什么强制用户注销所有 Google 服务的不良做法。如果那是唯一的出路,我会这样做,但我假设有更优雅的解决方案?

FWIW,“撤销”Google 访问 token 也不起作用。我的应用程序使用 OAuth2 ( see this doc) 的 profileemail 范围。这些不需要用户明确的“授予权限”,因此不存在撤销对这些范围的访问权限之类的事情,这会强制用户在登录时被重新提示。

如果有帮助,我使用了 mostly this doc实现 OAuth2 流程功能。我可以发布我的代码,但是 (1) 都在那篇文章中,并且 (2) 除非你不熟悉 flask/oauth2,否则我认为它应该与回答这个问题无关。

任何想法都会很棒,谢谢。

最佳答案

诀窍是添加 prompt='consent'。根据您使用的 API,可以在不同的地方添加它。这是一个基于书架应用程序的示例:

from oauth2client.contrib.flask_util import UserOAuth2
oauth2 = UserOAuth2()
oauth2.init_app(
    app,
    scopes=['email', 'profile'],
    authorize_callback=_request_user_info,
    client_id=app.config['GOOGLE_OAUTH2_CLIENT_ID'],
    client_secret=app.config['GOOGLE_OAUTH2_CLIENT_SECRET'],
    prompt='consent'
)

关于python - 如何让用户退出使用 Google OAuth2 登录的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47150564/

相关文章:

javascript - Flask json 响应在 ajax 成功处理程序中失败

google-cloud-platform - GCP端点与身份平台集成

google-analytics - Analytics API-多个帐户

python - 拟合阶跃函数

Python 追加函数未按预期工作

python - 如何保持传递给 jsonify() 函数的排序字典的顺序?

python - 无法让 twilio 显示 'from' 数据,但它会显示 'to' 数据

javascript - Google Shared Contacts API 更新公司范围内的联系人目录

python - 使用 Python 在 3D 数组中裁剪 3D 数组的最快方法

python - 使用多处理模块的简单玩具示例使计算机崩溃