美好的一天。
我在使用github oauth时发生了烧瓶舞蹈问题。这是我的代码:
from flask import Flask, redirect, url_for
from flask_dance.contrib.github import make_github_blueprint, github
app = Flask(__name__)
app.secret_key = "supersekrit6546ihugf98779"
blueprint = make_github_blueprint(
client_id="9f5534a3e8dd8a7f612b",
client_secret="c91568077277c22cf44e095952b96f4250524a7b",
)
app.register_blueprint(blueprint, url_prefix="/auth")
@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"])
github蓝图注册了两个端点:
GET /auth/github/
GET /auth/github/authorized/
这是内部发生的,问题是,在此简单设置中,GET /auth/github/
端点返回404 not found错误。这很好用,但是在开发过程中y犯了一个错误,并创建了诸如递归循环之类的东西:
127.0.0.1 - - [26/Dec/2019 01:09:24] "GET /github/ HTTP/1.1" 302 -
127.0.0.1 - - [26/Dec/2019 01:09:24] "GET /auth/github/ HTTP/1.1" 404 -
127.0.0.1 - - [26/Dec/2019 01:09:36] "GET /github/ HTTP/1.1" 302 -
127.0.0.1 - - [26/Dec/2019 01:09:36] "GET /auth/github/ HTTP/1.1" 404 -
127.0.0.1 - - [26/Dec/2019 01:10:07] "GET /github/ HTTP/1.1" 302 -
127.0.0.1 - - [26/Dec/2019 01:10:07] "GET /auth/github/ HTTP/1.1" 404 -
这种情况发生一次,当尝试测试登录名时,flask应用程序一次吐出所有日志,总共发出三个请求。从那时到现在,我的烧瓶应用程序再也无法正常运行,而不是正常运行:
127.0.0.1 - - [26/Dec/2019 00:13:24] "GET /github/ HTTP/1.1" 302 -
127.0.0.1 - - [26/Dec/2019 00:13:24] "GET /auth/github HTTP/1.1" 302 -
127.0.0.1 - - [26/Dec/2019 00:13:29] "GET /auth/github/authorized?code=4f89165770b11a7adbf0&state=M1M7ImawYggug4Vz98B49nYmvEwOpc HTTP/1.1" 302 -
我得到这个流程:
127.0.0.1 - - [26/Dec/2019 01:11:27] "GET /github/ HTTP/1.1" 302 -
127.0.0.1 - - [26/Dec/2019 01:11:27] "GET /auth/github/ HTTP/1.1" 404 -
请不要让自己跟随github oauth应用程序的客户端ID不匹配,我会在测试中更改所有这些ID以尝试解决此问题,而是采用登录过程的一般流程:登录路径-> flask-舞蹈登录路径->带args的flask-dance登录路径,以使GitHub工作。还要将应用程序减少到最小,实际上这是入门的瓶舞示例代码,因此日志中的端点不匹配。
这很奇怪,因为当我打印app.url_map时,我可以正确获取所有内容:
Map([
<Rule '/auth/github/authorized' (GET, OPTIONS, HEAD) -> github.authorized>,
<Rule '/auth/github' (GET, OPTIONS, HEAD) -> github.login>,
<Rule '/' (GET, OPTIONS, HEAD) -> index>,
<Rule '/static/<filename>' (GET, OPTIONS, HEAD) -> static>
])
如您所见,“ /”是该测试应用程序的登录入口点。
我有一个正在开发中的主应用程序,这也发生在那儿,我首先想到了github上的禁令之类的东西,所以我删除了github oauth应用程序并创建了一个新的应用程序,但不能解决问题。我仍然认为某种禁令适用于我,但是我不确定我的强硬措施是否正确。也许该禁令已应用于我的IP,但也不确定,无法在我的网络外部进行测试。
答案 0 :(得分:0)
该应用程序开始运行,但不确定为什么。所以这不是任何一种禁令,只是我的无知。