ソーシャル メディアの急速な発展に伴い、ユーザーの登録とログイン プロセスを簡素化するためにソーシャル ログインを使用する Web サイトやアプリケーションがますます増えています。ただし、このような機能を実装するのは簡単ではありません。 OAuth プロトコル経由でソーシャル ネットワークと対話するにはどうすればよいですか?取得したユーザー情報はどのように利用するのですか?権限とセキュリティにどう対処するか?幸いなことに、この機能をより簡単に実現できる、Flask-Social のような優れた Python アプリケーション拡張機能があります。この記事では、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 を使用してソーシャル ログイン機能を追加できるようになります。 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
も定義していることに注意してください。
もちろん、一般的なソーシャル ログイン プラットフォームは 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 アプリケーションにソーシャル ログイン機能を簡単に追加できます。 Flask-Social を使用すると、OAuth プロトコルを手動で処理することなく、Python コードを直接使用してソーシャル ネットワークの API を操作できます。複数のソーシャル ネットワークをサポートしたい場合は、コードを少し変更するだけで済みます。このような簡単な操作で、数多くのユーザーのトラブルが軽減され、アプリケーションのユーザーロイヤルティと定着率が向上します。
以上がFlask-Social: Python Web アプリケーションにソーシャル ログインを追加するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。