ソーシャル メディアの急速な発展に伴い、ユーザーの登録とログイン プロセスを簡素化するためにソーシャル ログインを使用する Web サイトやアプリケーションがますます増えています。ただし、このような機能を実装するのは簡単ではありません。 OAuth プロトコル経由でソーシャル ネットワークと対話するにはどうすればよいですか?取得したユーザー情報はどのように利用するのですか?権限とセキュリティにどう対処するか?幸いなことに、この機能をより簡単に実現できる、Flask-Social のような優れた Python アプリケーション拡張機能があります。この記事では、Flask-Social の使い方と基本原理を紹介します。
Flask-Social のインストールと構成
まず、Flask-Social をインストールする必要があります。 pip ツールを使用して迅速にインストールします。
インストールが完了したら、Flask プロジェクトで Flask-Social を構成する必要があります。まず、これを Flask アプリケーションに導入します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 ログインをアプリケーションに追加するとします。次のコードを使用できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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 アプリケーションに追加しました。例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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 サイトの他の関連記事を参照してください。