跳转到主要内容

使用Flask、requests和oauthlib优雅地进行OAuth舞蹈

项目描述

Flask-Dance 构建状态 测试覆盖率 文档

使用Flask、requests和oauthlib优雅地进行OAuth舞蹈。目前仅支持OAuth消费者,但该项目未来也容易支持OAuth提供者。该项目的完整文档托管在ReadTheDocs上,包括支持的所有OAuth提供者,但本README将为您展示功能特点。

安装

基本步骤

$ pip install Flask-Dance

或者如果您计划使用SQLAlchemy存储

$ pip install Flask-Dance[sqla]

快速入门

如果您想让用户能够从任何支持的OAuth提供者登录到您的应用程序,这很简单。以下是一个使用GitHub的示例

from flask import Flask, redirect, url_for
from flask_dance.contrib.github import make_github_blueprint, github

app = Flask(__name__)
app.secret_key = "supersekrit"
blueprint = make_github_blueprint(
    client_id="my-key-here",
    client_secret="my-secret-here",
)
app.register_blueprint(blueprint, url_prefix="/login")

@app.route("/")
def index():
    if not github.authorized:
        return redirect(url_for("github.login"))
    resp = github.get("/user")
    assert resp.ok
    return "You are @{login} on GitHub".format(login=resp.json()["login"])

如果您迫不及待想试试,请查看flask-dance-github示例存储库,其中包含运行此代码的详细说明。

github对象是一个上下文局部变量,就像flask.request。这意味着您可以在任何Python文件中导入它,并在传入的HTTP请求的上下文中使用它。如果您已将Flask应用程序拆分成多个不同的文件,请随意在任何文件中导入此对象,并像使用requests模块一样使用它。

您还可以使用Flask-Dance与任何您想要的OAuth提供者一起使用,而不仅仅是预设配置。有关如何使用其他OAuth提供者的说明,请参阅文档

存储

默认情况下,OAuth访问令牌存储在Flask的会话对象中。这意味着如果用户清除其浏览器cookie,他们将不得不再次进行OAuth舞蹈,这并不是很好。您最好将访问令牌存储在数据库或其他持久存储中,而Flask-Dance支持交换令牌存储。例如,如果您正在使用SQLAlchemy,请按以下方式设置

from flask_sqlalchemy import SQLAlchemy
from flask_dance.consumer.storage.sqla import OAuthConsumerMixin, SQLAlchemyStorage

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    # ... other columns as needed

class OAuth(OAuthConsumerMixin, db.Model):
    user_id = db.Column(db.Integer, db.ForeignKey(User.id))
    user = db.relationship(User)

# get_current_user() is a function that returns the current logged in user
blueprint.storage = SQLAlchemyStorage(OAuth, db.session, user=get_current_user)

SQLAlchemy存储无缝集成Flask-SQLAlchemyFlask-Login(用于用户管理)以及Flask-Caching(用于缓存)。

完整文档

本README仅展示了Flask-Dance的功能之一。要了解更多信息,请阅读ReadTheDocs上的文档

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

flask_dance-7.1.0.tar.gz (141.0 kB 查看散列值)

上传时间 源代码

构建的分发

flask_dance-7.1.0-py3-none-any.whl (62.2 kB 查看哈希值)

上传时间 Python 3

支持者