使用 Flask-OAuthlib,我如何强制 Facebook 要求重新验证帐户?

Using Flask-OAuthlib, how do I force Facebook to ask for account on reauthentication?

我正在通过 Google 和 Facebook 使用 Flask-OAuthlib 包实现 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 页面,这使得 select 给定帐户成为可能?

找到了。

行:

request_token_params={"scope": "email"},

应替换为:

request_token_params={"scope": "email", "auth_type": "reauthenticate"},

其实根据official documentation

To re-authenticate, you can use these same steps with additional parameters to force it:

[...]

reauthenticate - asks the person to re-authenticate unconditionally