ホームページ >バックエンド開発 >Python チュートリアル >Flask-Social: Python Web アプリケーションにソーシャル ログインを追加する

Flask-Social: Python Web アプリケーションにソーシャル ログインを追加する

PHPz
PHPzオリジナル
2023-06-17 11:37:41817ブラウズ

ソーシャル メディアの急速な発展に伴い、ユーザーの登録とログイン プロセスを簡素化するためにソーシャル ログインを使用する Web サイトやアプリケーションがますます増えています。ただし、このような機能を実装するのは簡単ではありません。 OAuth プロトコル経由でソーシャル ネットワークと対話するにはどうすればよいですか?取得したユーザー情報はどのように利用するのですか?権限とセキュリティにどう対処するか?幸いなことに、この機能をより簡単に実現できる、Flask-Social のような優れた Python アプリケーション拡張機能があります。この記事では、Flask-Social の使い方と基本原理を紹介します。

Flask-Social のインストールと構成

まず、Flask-Social をインストールする必要があります。 pip ツールを使用して迅速にインストールします。

pip install Flask-Social

インストールが完了したら、Flask プロジェクトで Flask-Social を構成する必要があります。まず、これを 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))

上記のコードでは、まず、Flask、SQLAlchemy、Flask-Social などの必要な依存関係ライブラリを導入します。次に、Flask アプリケーションと SQLAlchemy データベース、およびデータベースに接続するための URL を定義します。次に、Twitter 認証用のキーとシークレットを設定します。ここでは Twitter を例に説明しますが、他のソーシャル メディア プラットフォームの情報ももちろん使用できます。最後に、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')

ここのコードは単純です。最初にホームページを定義し、次に social を使用してログイン ルートを定義します。 .twitter.authorize() 関数を使用してログイン ページを生成します。次に、Twitter ログイン情報コールバックを処理し、トークンとシークレットをセッションに保存します。最後に、ユーザー情報を表示するプロファイル ルートを定義します。

上記のコードでは、Flask-Social に必要なセッション キーの生成に使用される app.secret_key も定義していることに注意してください。

Flask-Social の高度なアプリケーション: Github ログイン

もちろん、一般的なソーシャル ログイン プラットフォームは Twitter だけではなく、開発者のソーシャル ネットワーキング サイトとして、Github も非常に人気があります。そこで、ほんのわずかな変更を加えて Github ログインを Flask アプリケーションに追加しました。例:

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

ご覧のとおり、キーとシークレットを変更して、それを authorize() に追加するだけです。 authorized_response() Github ベースのソーシャル ログインを実現するには、メソッドで social.github を使用します。

Flask-Social の概要

Flask-Social を使用すると、Flask アプリケーションにソーシャル ログイン機能を簡単に追加できます。 Flask-Social を使用すると、OAuth プロトコルを手動で処理することなく、Python コードを直接使用してソーシャル ネットワークの API を操作できます。複数のソーシャル ネットワークをサポートしたい場合は、コードを少し変更するだけで済みます。このような簡単な操作で、数多くのユーザーのトラブルが軽減され、アプリケーションのユーザーロイヤルティと定着率が向上します。

以上がFlask-Social: Python Web アプリケーションにソーシャル ログインを追加するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。