2013-08-01 4 views
7

Можно ли использовать Flask-Social и Flask-Security, если я только хочу использовать Facebook Login, например, для регистрации и входа в систему , то есть нет локальных регистрационных/регистрационных форм?Использование Flask-Social только с провайдерами Oauth, без регистрации и входа в систему

Я просмотрел приложение примера с Flask-Social и документацию, но не смог определить, возможно ли это. В примере приложения пользователи не могут войти в систему Facebook, если они ранее не регистрировались. После регистрации в примере приложения они могут связать свою учетную запись Facebook с их локальной учетной записью.

Когда я попытался вызвать social.facebook.get_connection(), я получил AttributeError 'AnonymousUser' object has no attribute 'id', потому что нет current_user, который определяется флагом-защитой после регистрации/входа.

+0

@theva Вам необходимо написать код, как указано выше в вашем проекте. см. https://github.com/mattupstate/flask-social-example/blob/master/app/__init__.py#L51, вы будете знать, где разместить код. BTW, приведенный выше код должен изменить «db.commit()» на «ds.commit()» – amos

ответ

4

Это выполнимо без излишней дополнительной работы, используя декоратор @login_failed.connect_via. С app как ваш экземпляр приложения Колба, это будет выглядеть как

@login_failed.connect_via(app): 
def on_login_failed(sender, provider, oauth_response): 
    connection_values = get_connection_values_from_oauth_response(provider, oauth_response) 
    ds = current_app.security.datastore 
    user = ds.create_user(...) #fill in relevant stuff here 
    ds.commit() 
    connection_values['user_id'] = user.id 
    connect_handler(connection_values, provider) 
    login_user(user) 
    db.commit() 
    return render_template('success.html') 

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

+1

Я знаю, что это старое сообщение, но я не могу найти никаких документов для @ login_failed.connect_via decorator ... Является ли это частью Flask-social или Flask-security или что-то еще? – theva

+1

@theva - это сигнал, который активируется здесь: https://github.com/mattupstate/flask-social/blob/develop/flask_social/views.py#L192 – erik

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

  • Нет связанных вопросов^_^