oauth2.0 Flask-Dance和错误:redirect_uri_mismatch

yyyllmsg  于 2023-11-16  发布在  其他
关注(0)|答案(2)|浏览(145)

我在文档中遵循example

from flask import Flask, redirect, url_for
from flask_dance.contrib.google import make_google_blueprint, google

app = Flask(__name__)
app.secret_key = "supersekrit"
blueprint = make_google_blueprint(
    client_id="my-key-here",
    client_secret="my-secret-here",
    scope=[
        "https://www.googleapis.com/auth/plus.me",
        "https://www.googleapis.com/auth/userinfo.email",
    ]
)
app.register_blueprint(blueprint, url_prefix="/login")

@app.route("/")
def index():
    if not google.authorized:
        return redirect(url_for("google.login"))
    resp = google.get("/oauth2/v2/userinfo")
    assert resp.ok, resp.text
    return "You are {email} on Google".format(email=resp.json()["email"])

if __name__ == "__main__":
    app.run()

字符串
我已经在Google开发者控制台中将我的Web客户端应用配置为仅接受使用https://www.example.com/login/google/authorized端点的HTTPS。
在我尝试启动整个auth过程后,我得到了这个:

Error: redirect_uri_mismatch


我可以在请求中看到Flask-Dance正在发送http://www.example.com/login/google/authorized(使用HTTP,而不是HTTPS)。有没有办法告诉Flask-Dance使用HTTPS?我的开发环境也配置了HTTPS。

6qfn3psc

6qfn3psc1#

如果Flask-Dance使用HTTP生成重定向URL,这意味着Flask(不是Flask-Dance)认为传入的请求使用HTTP。(检查request.scheme以确认这一点。)如果传入的请求实际上使用HTTPS,那么Flask在某些地方会感到困惑,主要是由于代理。查看有关代理设置的Flask文档以了解更多信息。
一旦Flask理解传入请求使用HTTPS,Flask-Dance就会自动理解重定向URL也应该使用HTTPS。
(来源:我是Flask-Dance的作者)

ct2axkht

ct2axkht2#

像这样 Package 你的app.wsgi,你就可以开始了:

app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)

字符串

相关问题