使用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-SQLAlchemy、Flask-Login(用于用户管理)以及Flask-Caching(用于缓存)。
完整文档
本README仅展示了Flask-Dance的功能之一。要了解更多信息,请阅读ReadTheDocs上的文档。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建的分发
flask_dance-7.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6d0510e284f3d6ff05af918849791b17ef93a008628ec33f3a80578a44b51674 |
|
MD5 | 6de50ecc2799c81f2b390ffad99ecd11 |
|
BLAKE2b-256 | d7b338aff96fbafe850f7f4186dc06e96ebc29625d68d1427ad65c9d41c4ec9e |
flask_dance-7.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 81599328a2b3604fd4332b3d41a901cf36980c2067e5e38c44ce3b85c4e1ae9c |
|
MD5 | 2d27292e16c889c3fed9db1ded7a6240 |
|
BLAKE2b-256 | 758c4125e9f1196e5ab9675d38ff445ae4abd7085aba7551335980ac19196389 |