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

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

PHPz
リリース: 2023-06-17 11:37:41
オリジナル
944 人が閲覧しました

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

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

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

1

pip install Flask-Social

ログイン後にコピー

インストールが完了したら、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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート