docker - Flask-Dance facebook 无效的 redirect_url
问题描述
我正在使用 Flask-Dance 进行 Facebook 登录。
这是蓝图文件
from flask import redirect, url_for
from flask_dance.contrib.facebook import make_facebook_blueprint, facebook
facebook_bp = make_facebook_blueprint(
redirect_url='http://api.domain.com/auth/social/facebook/authorized'
)
@facebook_bp.route('')
def index():
if not facebook.authorized:
return redirect(url_for("facebook.login"))
resp = facebook.get("/me")
return resp.text
下面是主要的应用程序文件
from api.auth.facebook import facebook_bp
...
app.register_blueprint(facebook_bp, url_prefix='/auth/social')
当我请求https://api.domain.com/auth/social
它时,它会将我重定向到 facebook,它表示 redirect_url 已被阻止。
flask-dance 打开的 facebook url 是链接这个facebook.com/...&redirect_uri=http://api/auth/social/facebook/authorized&...
我什至尝试添加redirect_url
蓝图配置,但同样的事情。
该应用程序使用 docker compose nginx 和 gunicorn 部署。
解决方案
您说redirect_uri
查询参数与运行 Flask 应用程序的域不匹配。这表明 Flask(不是 Flask-Dance,而是 Flask 本身)正在获取有关其运行的服务器的错误信息(或可能没有信息)。此信息对于安全处理 OAuth 是必需的。
阅读有关代理和 HTTPS 的 Flask-Dance 文档,以及有关代理的 Flask 文档。一旦 Flask 能够正确确定它在哪里运行,Flask-Dance 应该会redirect_uri
正确生成。
推荐阅读
- angular - Angular Service Worker (ngsw) 或 Workbox
- flutter - 当我使用尾随新列时,RenderFlex 在底部溢出了 40 像素
- mysql - SQL - 如何使用 SUBSTRING 函数输出为 Col Name
- java - Spring restTemplate 中的 START_ARRAY 令牌
- r - tmap:在光栅图图例中的键周围添加矩形框
- c - 使用 Mach 信号量替代进程间匿名信号量
- apache-kafka - 为 Flink 集群中的插件添加自定义依赖项
- html - 放大时垂直导航栏不会填满屏幕的 100% 高度
- awk - 从 2 个文件中划分列值以匹配 id 和 header
- selenium - 在登录页面签名按钮在自动化时不可点击