我正在使用Flask-OAuthlib软件包通过Google和Facebook对OAuth 2提供商进行身份验证。
对于Google,我使用了这个:
google = oauth.remote_app(
"google",
consumer_key=client_id,
consumer_secret=client_secret,
request_token_params={"scope": "email"},
base_url="https://www.googleapis.com/oauth2/v1/",
request_token_url=None,
access_token_method="POST",
access_token_url="https://accounts.google.com/o/oauth2/token",
authorize_url="https://accounts.google.com/o/oauth2/auth",
)
对于Facebook,代码类似:
facebook = oauth.remote_app(
"facebook",
consumer_key=client_id,
consumer_secret=client_secret,
request_token_params={"scope": "email"},
base_url="https://graph.facebook.com/",
request_token_url=None,
access_token_method="GET",
access_token_url="/oauth/access_token",
authorize_url="https://www.facebook.com/dialog/oauth",
)
有更完整的示例here。
使用Google提供商时,我可以成功登录,一旦我注销,当我再次尝试登录时,我会重定向到显示帐户列表的Google页面,让我选择一个。
使用Facebook提供商时,我可以成功登录,但一旦我注销,当我再次登录时,Facebook不再提出任何问题,只需使用之前使用的帐户自动登录。
如何强制Facebook重新进行身份验证,即每次向用户显示可以选择指定帐户的Facebook页面?
答案 0 :(得分:1)
找到它。
该行:
request_token_params={"scope": "email"},
应替换为:
request_token_params={"scope": "email", "auth_type": "reauthenticate"},
事实上,根据official documentation:
要重新验证,您可以使用这些相同的步骤和其他参数来强制它:
[...]
reauthenticate
- 要求此人无条件重新认证