我在我的网络服务器应用程序中实现了 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) 的 profile
和 email
范围。这些不需要用户明确的“授予权限”,因此不存在撤销对这些范围的访问权限之类的事情,这会强制用户在登录时被重新提示。
如果有帮助,我使用了 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/