2016-01-31 2 views
1

У меня возникли проблемы с добавлением функции «login with Facebook» в мое приложение Flask, которое уже использует Flask-Security для аутентификации пользователя. То, что я действительно хочу, - это кнопка Facebook, кроме формы входа в систему, так что вы можете использовать Facebook вместо почты/пароля.Добавление логина facebook в Flask-security

Я пытался сделать это с помощью Facebook-social, но не смог, я действительно не понимаю документы. Мне кажется, что пользователь должен быть зарегистрирован до подключения учетной записи к Facebook, что не так, как я хочу.

Есть ли кто-нибудь, кто достиг этого? Мне кажется, что это было бы обычным делом, но я не могу найти ничего полезного в этом вопросе при поиске в Интернете.

ответ

2

Я сделал что-то подобное, но с нашим собственным SSO вместо Facebook, но принципы одинаковы. В нашем случае мы используем CAS, поэтому @login_required перенаправляет на наш вход CAS. При успешном входе в систему я использую атрибут имени пользователя CAS для динамического добавления пользователя, а затем войдите через Flask-Security. Обратите внимание, что мой пример делает предположение о конфигурации вашей системы на основе https://pythonhosted.org/Flask-Security/quickstart.html

def add_user(username): 
     if not user_datastore.find_user(username=username): 
       user_datastore.create_user(**get_user_data(username)) 
       user_datastore.commit() 
       db.session.commit() 

def get_user_data(username): 
     <Return dict mapping Facebook data to your user model> 

def set_current_login(username): 
     try: 
       add_user(username) 
       security.current_user = user_datastore.find_user(username=username) 
     except Exception as e: 
       print str(e) 
       return False 
     return True 

@app.route('/') 
@login_required 
def index(): 
    set_current_login(<facebook username var>) 

Обратите внимание, что вы можете также использовать flask_security.utils.login_user() рутинный вместо установки объекта current_user, который также будет установлен сеанс Колба-Security печенье.

См. Документацию API по адресу https://pythonhosted.org/Flask-Security/api.html

Смежные вопросы