Flask-Dance:找不到GitHub蓝图登录端点404

时间:2019-12-27 16:08:34

标签: authentication github flask flask-dance

美好的一天。

我在使用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,但也不确定,无法在我的网络外部进行测试。

1 个答案:

答案 0 :(得分:0)

该应用程序开始运行,但不确定为什么。所以这不是任何一种禁令,只是我的无知。