使用Flask-OAuthlib,如何强制Facebook在重新认证时要求帐户?

时间:2017-01-14 21:42:05

标签: python flask oauth-2.0 facebook-login flask-oauthlib

我正在使用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页面?

1 个答案:

答案 0 :(得分:1)

找到它。

该行:

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

应替换为:

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

事实上,根据official documentation

  

要重新验证,您可以使用这些相同的步骤和其他参数来强制它:

     

[...]

     

reauthenticate - 要求此人无条件重新认证