Flask-Social : ajout d'une connexion sociale à votre application Web Python

PHPz
Libérer: 2023-06-17 11:37:41
original
807 Les gens l'ont consulté

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.

Installation et configuration de Flask-Social

Tout d'abord, nous devons installer Flask-Social. Utilisez l'outil pip pour installer rapidement :

pip install Flask-Social
Copier après la connexion

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))
Copier après la connexion

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 的基本用法

有了上面的设置,我们现在可以使用 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')
Copier après la connexion

这里的代码很简单:我们首先定义了一个主页,然后我们定义一个 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'])
Copier après la connexion

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

Utilisation de base de Flask-Social

Avec les paramètres ci-dessus, nous pouvons désormais utiliser Flask-Social pour ajouter une fonctionnalité de connexion sociale. Supposons que nous souhaitions ajouter la connexion Twitter dans notre application, nous pouvons utiliser le code suivant :

rrreee

Le code ici est simple : nous définissons d'abord une page d'accueil, puis nous définissons une route de connexion, en utilisant social.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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal