>  기사  >  백엔드 개발  >  Flask-Social: Python 웹 애플리케이션에 소셜 로그인 추가

Flask-Social: Python 웹 애플리케이션에 소셜 로그인 추가

PHPz
PHPz원래의
2023-06-17 11:37:41809검색

소셜 미디어의 급속한 발전과 함께 점점 더 많은 웹사이트와 애플리케이션이 사용자 등록 및 로그인 프로세스를 단순화하기 위해 소셜 로그인을 사용하기 시작했습니다. 그러나 그러한 기능을 구현하는 것은 쉽지 않습니다. 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 클래스와 연결합니다. 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')

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

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

Flask-Social의 기본 사용법

위의 설정으로 이제 Flask-Social을 사용하여 소셜 로그인 기능을 추가할 수 있습니다. 애플리케이션에 Twitter 로그인을 추가한다고 가정하면 다음 코드를 사용할 수 있습니다.

rrreee

코드는 간단합니다. 먼저 홈페이지를 정의한 다음 social.twitter.authorize(를 사용하여 로그인 경로를 정의합니다. ) 함수를 사용하여 로그인 페이지를 생성합니다. 다음으로 Twitter 로그인 정보 콜백을 처리하고 세션에 토큰과 비밀 정보를 저장합니다. 마지막으로 사용자 정보를 표시하기 위한 프로필 경로를 정의합니다. 🎜🎜위 코드에서는 Flask-Social에서 요구하는 세션 키를 생성하는 데 사용되는 app.secret_key도 정의합니다. 🎜🎜Flask-Social의 고급 응용 프로그램: Github 로그인🎜🎜물론 Twitter가 유일한 일반적인 소셜 로그인 플랫폼은 아닙니다. 개발자 소셜 네트워킹 사이트로서 Github도 매우 유명합니다. 그래서 우리는 약간만 변경하여 Flask 애플리케이션에 Github 로그인을 추가했습니다. 예: 🎜rrreee🎜 보시다시피 키와 비밀만 수정하고 authorize() Authorized_response() 메소드에 social.github를 사용하여 Github 기반의 소셜 로그인을 구현합니다. 🎜🎜Flask-Social 요약🎜🎜Flask-Social을 사용하면 Flask 애플리케이션에 소셜 로그인 기능을 쉽게 추가할 수 있습니다. Flask-Social을 사용하면 OAuth 프로토콜을 수동으로 처리할 필요 없이 Python 코드를 직접 사용하여 소셜 네트워크의 API를 작동할 수 있습니다. 여러 소셜 네트워크를 지원하려면 약간의 코드 수정만 하면 됩니다. 이러한 간단한 조작으로 수많은 사용자의 고민을 줄이고 애플리케이션의 사용자 충성도와 끈기를 높일 수 있습니다. 🎜

위 내용은 Flask-Social: Python 웹 애플리케이션에 소셜 로그인 추가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.