Avec le développement rapide des médias sociaux, de plus en plus de sites Web et d'applications commencent à utiliser la connexion sociale pour simplifier le processus d'enregistrement et de connexion des utilisateurs. Cependant, la mise en œuvre d’une telle fonctionnalité n’est pas facile. Comment interagir avec les réseaux sociaux via le protocole OAuth ? Comment utiliser les informations utilisateur obtenues ? Comment gérer les autorisations et la sécurité ? Heureusement, il existe une excellente extension d'application Python comme Flask-Social qui peut nous aider à réaliser cette fonction plus facilement. Cet article présentera l'utilisation et les principes de base de Flask-Social.
Tout d'abord, nous devons installer Flask-Social. Utilisez l'outil pip pour installer rapidement :
pip install Flask-Social
Une fois l'installation terminée, nous devons configurer Flask-Social dans le projet Flask. Introduisez-le d'abord dans l'application Flask :
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))
Dans le code ci-dessus, nous introduisons d'abord les bibliothèques de dépendances nécessaires, notamment Flask, SQLAlchemy et Flask-Social. Ensuite, nous définissons une application Flask et une base de données SQLAlchemy, ainsi que l'URL pour se connecter à la base de données. Ensuite, nous définissons la clé et le secret pour l'authentification Twitter. Twitter est utilisé ici à titre d'exemple. Bien entendu, les informations provenant d'autres plateformes de médias sociaux peuvent également être utilisées. Enfin, initialisez l'instance social
via la classe Social
et connectez-la à la classe 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
Le code ici est simple : nous définissons d'abord une page d'accueil, puis nous définissons une route de connexion, en utilisantsocial.twitter.authorize( )
pour générer la page de connexion. Ensuite, nous traitons le rappel des informations de connexion Twitter et stockons le jeton et le secret dans la session. Enfin, nous définissons un itinéraire de profil pour afficher les informations utilisateur. 🎜🎜Veuillez noter que dans le code ci-dessus, nous définissons également un app.secret_key
, qui est utilisé pour générer la clé de session, qui est requise par Flask-Social. 🎜🎜Application avancée de Flask-Social : connexion Github🎜🎜Bien sûr, Twitter n'est pas la seule plateforme de connexion sociale courante En tant que site de réseautage social pour développeurs, Github est également très populaire. Nous avons donc ajouté la connexion Github à l'application Flask avec seulement de légères modifications, par exemple : 🎜rrreee🎜Comme vous pouvez le voir, il vous suffit de modifier la clé et le secret, et d'utiliser authorize()
et Utilisez <code>social.github
dans la méthodeauthorized_response() pour implémenter la connexion sociale basée sur Github. 🎜🎜Résumé de Flask-Social🎜🎜Avec Flask-Social, nous pouvons facilement ajouter une fonctionnalité de connexion sociale à nos applications Flask. Grâce à Flask-Social, nous pouvons utiliser directement le code Python pour faire fonctionner l'API du réseau social sans avoir à gérer manuellement le protocole OAuth. Si vous souhaitez prendre en charge plusieurs réseaux sociaux, il suffit d'une légère modification du code. Avec une opération aussi simple, vous réduirez les problèmes d’innombrables utilisateurs et augmenterez la fidélité des utilisateurs et la pérennité de votre application. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!