2013-08-01 4 views
7

Ist es möglich Flask-Social und Flask-Security zu verwenden, wenn ich nur den Facebook-Login verwenden möchte, zum Beispiel für Benutzerregistrierung und Login , dh keine lokalen Anmelde-/Anmeldeformulare?Flask-Social nur mit Oauth-Providern, keine lokale Registrierung/Login-Formulare verwenden

Ich habe die Flask-Social-Beispielanwendung und die Dokumentation durchgesehen, konnte aber nicht feststellen, ob dies möglich ist. In der Beispielanwendung können sich Benutzer nicht bei Facebook anmelden, wenn sie sich nicht zuvor registriert haben. Nach der Registrierung bei der Beispielanwendung können sie ihr Facebook-Konto mit ihrem lokalen Konto verknüpfen.

Als ich versuchte, social.facebook.get_connection() aufzurufen ich eine AttributeError 'AnonymousUser' object has no attribute 'id' bekam, weil es keine current_user ist, die durch Kolben-Sicherheit nach der Registrierung/Anmeldung definiert ist.

+0

@theva Sie müssen den Code wie oben in Ihrem Projekt schreiben. Unter https://github.com/mattupstate/flask-social-example/blob/master/app/__init__.py#L51 erfahren Sie, wo Sie den Code platzieren müssen. BTW, der obige Code muss "db.commit()" in "ds.commit()" ändern – amos

Antwort

4

Dies ist möglich ohne zu viel zusätzliche Arbeit mit dem @login_failed.connect_via Dekorateur. Mit app als Instanz einer Flasche app, würde es aussehen

@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') 

Wie in den betreffenden Sachen Füllung für den Benutzer zu schaffen, ich, nur eine zufällige Zeichenfolge für das Passwort erstellen und habe keine Probleme habe verlassen die E-Mail-Adresse null Ich habe auch genau die gleiche Antwort auf die Flask-Social github page enthalten.

+1

Ich weiß, das ist ein alter Beitrag, aber ich kann keine Dokumente für den @ login_failed.connect_via Dekorateur finden ... Ist das ein Teil der Flask-sozialen oder Flask-Sicherheit oder etwas anderes? – theva

+1

@theva es ist ein Signal, dass hier gefeuert wird: https://github.com/mattupstate/flask-social/blob/develop/flask_social/views.py#L192 – erik

Verwandte Themen