2017-01-14 2 views
0

Я реализую аутентификацию с поставщиками OAuth 2 Google и Facebook с использованием пакета Flask-OAuthlib.Использование Flask-OAuthlib, как заставить Facebook запрашивать учетную запись при повторной аутентификации?

Для 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

Найдено.

Линия:

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

следует заменить:

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

В самом деле, в соответствии с official documentation:

Для повторной аутентификации, вы можете использовать те же самые шаги с дополнительными параметрами, чтобы заставить его:

[...]

reauthenticate - просит человека повторной аутентификации безоговорочно