Heim > Backend-Entwicklung > Python-Tutorial > Flask-Social: Hinzufügen eines sozialen Logins zu Ihrer Python-Webanwendung

Flask-Social: Hinzufügen eines sozialen Logins zu Ihrer Python-Webanwendung

PHPz
Freigeben: 2023-06-17 11:37:41
Original
838 Leute haben es durchsucht

Mit der rasanten Entwicklung sozialer Medien beginnen immer mehr Websites und Anwendungen, Social Login zu verwenden, um den Benutzerregistrierungs- und Anmeldeprozess zu vereinfachen. Allerdings ist die Implementierung einer solchen Funktionalität nicht einfach. Wie interagiere ich mit sozialen Netzwerken über das OAuth-Protokoll? Wie verwende ich die erhaltenen Benutzerinformationen? Wie gehe ich mit Berechtigungen und Sicherheit um? Glücklicherweise gibt es eine hervorragende Python-Anwendungserweiterung wie Flask-Social, mit der wir diese Funktion einfacher erreichen können. In diesem Artikel werden die Verwendung und die Grundprinzipien von Flask-Social vorgestellt.

Flask-Social Installation und Konfiguration

Zuerst müssen wir Flask-Social installieren. Verwenden Sie das Pip-Tool für eine schnelle Installation:

pip install Flask-Social
Nach dem Login kopieren

Nachdem die Installation abgeschlossen ist, müssen wir Flask-Social im Flask-Projekt konfigurieren. Führen Sie es zunächst in der Flask-Anwendung ein:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask.ext.social import Social
from flask.ext.social.datastore import SQLAlchemyConnectionDatastore

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)

app.config['SOCIAL_AUTH_TWITTER_KEY'] = 'your_key'
app.config['SOCIAL_AUTH_TWITTER_SECRET'] = 'your_secret'

social = Social(app, SQLAlchemyConnectionDatastore(db))
Nach dem Login kopieren

Im obigen Code stellen wir zunächst die erforderlichen Abhängigkeitsbibliotheken vor, einschließlich Flask, SQLAlchemy und Flask-Social. Anschließend definieren wir eine Flask-Anwendung und eine SQLAlchemy-Datenbank sowie die URL für die Verbindung zur Datenbank. Als nächstes legen wir den Schlüssel und das Geheimnis für die Twitter-Authentifizierung fest. Natürlich können auch Informationen von anderen Social-Media-Plattformen verwendet werden. Initialisieren Sie abschließend die social-Instanz über die Klasse Social und verbinden Sie sie mit der Klasse SQLAlchemyConnectionDatastore. Social 类初始化 social 实例,并将其与 SQLAlchemyConnectionDatastore 类连接起来。

Flask-Social 的基本用法

有了上面的设置,我们现在可以使用 Flask-Social 来添加社交登录功能了。假设我们要在应用程序中添加 Twitter 登录,我们可以使用以下代码:

from flask import Flask, request, redirect, url_for, render_template
from flask_sqlalchemy import SQLAlchemy
from flask.ext.social import Social
from flask.ext.social.datastore import SQLAlchemyConnectionDatastore

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.secret_key = 'secret'

db = SQLAlchemy(app)

app.config['SOCIAL_AUTH_TWITTER_KEY'] = 'your_key'
app.config['SOCIAL_AUTH_TWITTER_SECRET'] = 'your_secret'

social = Social(app, SQLAlchemyConnectionDatastore(db))

@app.route('/')
def home():
    return render_template('home.html')

@app.route('/login')
def login():
    return social.twitter.authorize(callback=url_for('auth_twitter',
        next=request.args.get('next') or request.referrer or None))

@app.route('/auth/twitter')
def auth_twitter():
    resp = social.twitter.authorized_response()
    if resp is None:
        return redirect(url_for('home'))
    session['twitter_token'] = (
        resp['oauth_token'],
        resp['oauth_token_secret']
    )
    return redirect(url_for('profile'))

@app.route('/profile')
def profile():
    return render_template('profile.html')
Nach dem Login kopieren

这里的代码很简单:我们首先定义了一个主页,然后我们定义一个 login 路由,使用social.twitter.authorize() 函数来生成登录页面。接着,我们处理了 Twitter 登录的信息回调,并将 token 和 secret 存储在 session 中。最后,我们定义一个 profile 路由来展示用户信息。

请注意,在上面的代码中,我们还定义了一个app.secret_key,用于生成会话密钥,这是 Flask-Social 需要的。

Flask-Social 的进阶应用:Github 登录

常见的社交登录平台当然不止 Twitter 一个,Github 作为一个开发者社交网站,也广受欢迎。于是我们在 Flask 应用程序中加入 Github 登录,只需略作更改,例如:

from flask import Flask, request, redirect, url_for, render_template, session
from flask_sqlalchemy import SQLAlchemy
from flask.ext.social import Social
from flask.ext.social.datastore import SQLAlchemyConnectionDatastore

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.secret_key = 'secret'

db = SQLAlchemy(app)

app.config['SOCIAL_AUTH_GITHUB_KEY'] = 'your_key'
app.config['SOCIAL_AUTH_GITHUB_SECRET'] = 'your_secret'

social = Social(app, SQLAlchemyConnectionDatastore(db))

@app.route('/')
def home():
    return render_template('home.html')

@app.route('/login')
def login():
    return social.github.authorize(callback=url_for('auth_github',
        next=request.args.get('next') or request.referrer or None))

@app.route('/auth/github')
def auth_github():
    resp = social.github.authorized_response()
    if resp is None:
        return redirect(url_for('home'))
    session['github_token'] = (
        resp['access_token'], ''
    )
    return redirect(url_for('profile'))

@app.route('/profile')
def profile():
    me = social.github.get('/user')
    return render_template('profile.html', name=me.data['name'])
Nach dem Login kopieren

如你所见,只需修改 key 和 secret,并在 authorize()authorized_response() 方法中使用 social.github

Grundlegende Verwendung von Flask-Social

Mit den oben genannten Einstellungen können wir jetzt Flask-Social verwenden, um Social-Login-Funktionalität hinzuzufügen. Angenommen, wir möchten Twitter-Login zu unserer Anwendung hinzufügen, können wir den folgenden Code verwenden:

rrreee

Der Code hier ist einfach: Wir definieren zuerst eine Homepage, dann definieren wir eine Login-Route, indem wir social.twitter.authorize( )-Funktion zum Generieren der Anmeldeseite. Als Nächstes verarbeiten wir den Rückruf der Twitter-Anmeldeinformationen und speichern das Token und das Geheimnis in der Sitzung. Schließlich definieren wir eine Profilroute, um Benutzerinformationen anzuzeigen. 🎜🎜Bitte beachten Sie, dass wir im obigen Code auch einen app.secret_key definieren, der zum Generieren des Sitzungsschlüssels verwendet wird, der von Flask-Social benötigt wird. 🎜🎜Erweiterte Anwendung von Flask-Social: Github-Login🎜🎜Natürlich ist Twitter nicht die einzige gängige Social-Login-Plattform, auch Github ist als Entwickler-Social-Networking-Site sehr beliebt. Deshalb haben wir die Github-Anmeldung mit nur geringfügigen Änderungen zur Flask-Anwendung hinzugefügt, zum Beispiel: 🎜rrreee🎜Wie Sie sehen, müssen Sie nur den Schlüssel und das Geheimnis ändern und authorize() und Verwenden Sie <code>social.github in der autorisierten_response()-Methode, um Social Login basierend auf Github zu implementieren. 🎜🎜Zusammenfassung von Flask-Social🎜🎜Mit Flask-Social können wir unseren Flask-Anwendungen ganz einfach Social-Login-Funktionen hinzufügen. Mit Flask-Social können wir Python-Code direkt verwenden, um die API des sozialen Netzwerks zu betreiben, ohne uns manuell mit dem OAuth-Protokoll befassen zu müssen. Wenn Sie mehrere soziale Netzwerke unterstützen möchten, ist lediglich eine geringfügige Codeänderung erforderlich. Mit einer so einfachen Bedienung reduzieren Sie die Probleme unzähliger Benutzer und erhöhen die Benutzertreue und Bindung Ihrer Anwendung. 🎜

Das obige ist der detaillierte Inhalt vonFlask-Social: Hinzufügen eines sozialen Logins zu Ihrer Python-Webanwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage