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.
Zuerst müssen wir Flask-Social installieren. Verwenden Sie das Pip-Tool für eine schnelle Installation:
pip install Flask-Social
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))
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 来添加社交登录功能了。假设我们要在应用程序中添加 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')
这里的代码很简单:我们首先定义了一个主页,然后我们定义一个 login 路由,使用social.twitter.authorize()
函数来生成登录页面。接着,我们处理了 Twitter 登录的信息回调,并将 token 和 secret 存储在 session 中。最后,我们定义一个 profile 路由来展示用户信息。
请注意,在上面的代码中,我们还定义了一个app.secret_key
,用于生成会话密钥,这是 Flask-Social 需要的。
常见的社交登录平台当然不止 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'])
如你所见,只需修改 key 和 secret,并在 authorize()
和 authorized_response()
方法中使用 social.github
rrreee
Der Code hier ist einfach: Wir definieren zuerst eine Homepage, dann definieren wir eine Login-Route, indem wirsocial.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!