Flask facebook canvas 应用程序 - 不允许 405 方法

2024-02-20

我对 Web 开发和 Python 相当陌生,试图使用 python Flask 制作一个 facebook 应用程序。在本教程中找到了一些我用来入门的代码:http://ryaneshea.com/facebook-authentication-for-flask-apps http://ryaneshea.com/facebook-authentication-for-flask-apps

Facebook OAuth 身份验证正在运行,用户第一次使用该应用程序时,系统会要求他们授予该应用程序权限。之后,它们应该被重定向到应用程序索引站点。如果该应用程序是在 Facebook 内部使用的,则会显示消息:“405 方法不允许”。如果从 Facebook 外部(从我的 apache Web 服务器)使用该应用程序,则重定向有效。

当从 Facebook 外部使用该应用程序时,仅发出 GET 请求,但当从 Facebook 内部使用时,这是给出 405 错误的 POST 请求:

"POST /?fb_source=search&ref=br_tf HTTP/1.1""

关于如何接受来自 Facebook 的 POST 请求以便重定向用户有什么建议吗?

以下是代码的相关部分:

from flask import render_template, url_for, request, session, redirect

from flask_oauth import OAuth

oauth = OAuth()

facebook = oauth.remote_app('facebook',

                        base_url='https://graph.facebook.com/',
                        request_token_url=None,
                        access_token_url='/oauth/access_token',
                        authorize_url='https://www.facebook.com/dialog/oauth',
                        consumer_key=FACEBOOK_APP_ID,
                        consumer_secret=FACEBOOK_APP_SECRET,
                        request_token_params={'scope': 'email, '}
)

app = Flask(__name__)

@facebook.tokengetter
def get_facebook_token():
    return session.get('facebook_token')

def pop_login_session():
    session.pop('logged_in', None)
    session.pop('facebook_token', None)

@app.route("/")
def index():
    return render_template('index.html')

@app.route("/facebook_login")
def facebook_login():
    return facebook.authorize(callback=url_for('facebook_authorized',
                                               next=request.args.get('next'), _external=True))

@app.route("/facebook_authorized")
@facebook.authorized_handler
def facebook_authorized(resp):
    next_url = request.args.get('next') or url_for('index')
    if resp is None or 'access_token' not in resp:
        return redirect(next_url)

    session['logged_in'] = True
    session['facebook_token'] = (resp['access_token'], '')

    return redirect(next_url)

我通过为适当的路由指定 GET 和 POST 方法来修复它。必须重新启动 apache 才能使其正常工作。

这是语法:

@app.route("/facebook_authorized", methods=['GET', 'POST'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask facebook canvas 应用程序 - 不允许 405 方法 的相关文章

  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • 为什么 Python 中的“pip install”会引发语法错误?

    我正在尝试使用 pip 安装软件包 我试着跑pip install从Python shell 但我得到了SyntaxError 为什么我会收到此错误 如何使用 pip 安装软件包 gt gt gt pip install selenium
  • Python Kivy - 在本机网络浏览器中打开 url 的应用程序

    我尝试制作一个简单的应用程序 在单击 Screen One 上的按钮后 在 Kivy 中打开一个网页 我使用了这个主题 Python 在应用程序中直接显示网络浏览器 iframe https stackoverflow com questi
  • 创建一个类似于 Tkinter 的表

    我希望创建类似于 Tkinter 中的表格的东西 但它不一定是这样的 例如 我想创建标题 Name1 Name2 Value 并在每个标题下面有几个空白行 然后 我希望稍后用我计算的值或名称的字符串值填充这些行 因此是标签 对于 Name2
  • 获取列表中倒数第二个元素[重复]

    这个问题在这里已经有答案了 我可以通过以下方式获取列表的倒数第二个元素 gt gt gt lst a b c d e f gt gt gt print lst len lst 2 e 有没有比使用更好的方法print lst len lst
  • 在可编辑的QSqlQueryModel中实现setEditStrategy

    这是后续这个问题 https stackoverflow com questions 49752388 editable qtableview of complex sql query 在那里 我们创建了 QSqlQueryModel 的可
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • Django 在选择列表更改时创建毫无意义的迁移

    我正在尝试使用可调用创建一个带有选择字段的模型 以便 Django 在选择列表更改时不会创建迁移 如中所述this https stackoverflow com questions 31788450 stop django from cr
  • Scipy 稀疏 Cumsum

    假设我有一个scipy sparse csr matrix代表下面的值 0 0 1 2 0 3 0 4 1 0 0 2 0 3 4 0 我想就地计算非零值的累积和 这会将数组更改为 0 0 1 3 0 6 0 10 1 0 0 3 0 6
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • Python 3.2 中 **kwargs 和 dict 有什么区别?

    看起来Python的很多方面都只是功能的重复 除了我在 Python 中的 kwargs 和 dict 中看到的冗余之外 还有什么区别吗 参数解包存在差异 许多人使用kwargs 并通过dict作为论据之一 使用参数解包 Prepare f
  • 如何禁止 celery 中的 pickle 序列化

    Celery 默认使用 pickle 作为任务的序列化方法 如中所述FAQ http ask github com celery faq html isn t using pickle a security concern 这代表一个安全漏
  • 检查字符串是否只有字母和空格 - Python

    试图让 python 返回一个字符串仅包含字母和空格 string input Enter a string if all x isalpha and x isspace for x in string print Only alphabe
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如
  • 在 Python 模块中使用 InstaLoader

    我正在尝试使用 Instaloader 下载与主题标签相关的照片以进行图像分析 我在GitHub存储库中找到了一个全面的方法 如何在终端中执行它 但是 我需要将脚本集成到Python笔记本中 这是脚本 instaloader no vide
  • 本地权威声明和外部提供商声明的混淆

    我正在创建一个简单的 WebApi 它允许用户与 Facebook 连接 当我从 facebook 获取 accessToken 时 我调用 RegisterExternal 创建 Asp Net Identity 记录并存储令牌中的声明
  • Django South - 将 null=True 字段转换为 null=False 字段

    我的问题是 转变的最佳做法是什么null True场变成null False使用 Django South 的字段 具体来说 我正在与ForeignKey 你应该先写一个数据迁移 http south aeracode org docs t

随机推荐

  • Windows 10 上的 Visual Studio 2012 中缺少“添加域服务类”

    我有一个 Silverlight 5 应用程序 需要对其进行维护工作 我想避免使用虚拟机 随着 Net Framework 4 6 2 的发布 目前处于预览版 this bug https connect microsoft com Vis
  • C/C++ 编译器是否将按二次方值进行常量除法优化为移位?

    问题说明了一切 有谁知道以下是否 size t div size t value const size t x 64 return value x 优化为 size t div size t value return value gt gt
  • 在 Android 的自定义适配器中设置 Textview 文本时出现问题

    我无法在其中设置 textview 的 setText 属性getView 自定义适配器的方法 我已经尝试过以下解决方案 但它对我不起作用 解决方案一 https stackoverflow com questions 5612844 ho
  • 在 ubuntu 16.04 中安装 Caffe 时遇到困难

    操作系统 ubuntu 16 04 CUDA 7 5 库德恩 5 我正在关注this https github com BVLC caffe wiki Ubuntu 16 04 or 15 10 OpenCV 3 1 Installatio
  • CSS,粘性页脚

    我知道 我知道 我以前问过这个问题 不幸的是 我失去了工作 我重新开始 回到原来的岗位 min height 100 在我的容器上不起作用 https stackoverflow com questions 9860888 min heig
  • std::remove 和 std::remove_if 设计的稳定性是否失败?

    最近 从一条评论中 我了解到std remove and std remove if是稳定的 我是否错误地认为这是一个糟糕的设计选择 因为它阻止了某些优化 想象一下删除 1M 的第一个和第五个元素std vector 由于稳定性原因 我们无
  • ie8 中未调用图像上的 onload 回调

    我正在尝试预加载图像并将高度和宽度设置为容器 问题似乎出在 ie8 中的缓存 因为它无法在后续刷新时加载 我查找并尝试了多种解决方案 但似乎没有任何效果 至少不一致 当前的 JavaScript img new Image img src
  • Pandas:将掩码应用于多索引数据帧

    我有一个带有 MultiIndex 列的 pandas 数据框 有 3 个级别 import itertools import numpy as np def mklbl prefix n return s s prefix i for i
  • UISegmentedControl 行为

    关于 iPhone 上的 UISegmentedControl 类的一个简单问题 希望有些人可能已经注意到 在具有 2 个分段的默认状态下 即使用户点击当前选定的分段 分段控件仍然会切换 我在应用程序中看到 UISegmentedContr
  • 如何安排对 MS Access 宏的调用?

    我正在寻找安排对 MS Access 宏的调用 该宏使用 csv 文件 我每天都会收到 来更新 SharePoint 日历 有人可以解释一下如何安排每日调用来在我的 Windows 7 计算机上运行此宏 我使用的是 Access 2003
  • 如何在 CodeIgniter 中获取会话超时?

    我试图在会话超时前 5 分钟运行一个函数 我的配置文件中的会话超时设置为 7 200 可以用 CodeIgniter 做到这一点吗 我想你正在寻找这样的东西 lastActivity this gt session gt userdata
  • 将 SimpleXMLElement 对象转换为数组

    我必须将 SimpleXMLElement 对象转换为数组 数组如下 Array 0 gt SimpleXMLElement Object Cell gt Array 0 gt SimpleXMLElement Object Data gt
  • 如何在 Spring 5 WebFlux WebClient 中设置超时

    我正在尝试在 WebClient 上设置超时 这是当前的代码 SslContext sslContext SslContextBuilder forClient trustManager InsecureTrustManagerFactor
  • 如何在 redmine wiki 中添加一个空行?

    我只是想知道如何在 redmine 中添加一些空行 我尝试的是输入以下文本 some sample txt with a few empty lines 我在redmine中得到的是 some sample txt with a few e
  • 当窗口滚动到特定位置时触发事件

    我想在浏览器窗口超出某个点时调用函数 例如 用户将窗口从顶部向下滚动超过 200px 是否有一个我可以绑定的事件 然后我如何检查从浏览器顶部到页面顶部的偏移量是多少 您可以使用onscroll https developer mozilla
  • 24小时内SQL选择?

    People Born 是日期时间类型 我只想删除过去 24 小时内出生的人 我将其作为 Visual Studio 2010 内的存储过程运行 这是我的尝试 DELETE FROM People WHERE People Born gt
  • 为什么一个汉字需要1个字符(2个字节)而不是3个字节?

    我有以下程序来测试Java如何处理中文字符 String s3 世界您好 char chs s3 toCharArray byte bs s3 getBytes StandardCharsets UTF 8 byte bs2 new Str
  • 将 QStackedWidget 的大小调整为打开的页面[重复]

    这个问题在这里已经有答案了 我想要我的QStackedWidget调整到打开页面的大小 我在第一页附加了很多小部件 但其余页面只有一个按钮 所以它们保持这么大 第一页还可以 我怎样才能让我的QStackedWidget获得正在查看的页面的大
  • Kafka 发送重复消息

    我们使用 kafka 0 9 0 0 来编排不同微服务之间的命令消息 我们发现一个间歇性问题 即重复消息被传递到特定主题 下面给出了发生此问题时出现的日志 有人可以帮助理解这个问题吗 Wed 21 Sep 2016 09 19 07 WAR
  • Flask facebook canvas 应用程序 - 不允许 405 方法

    我对 Web 开发和 Python 相当陌生 试图使用 python Flask 制作一个 facebook 应用程序 在本教程中找到了一些我用来入门的代码 http ryaneshea com facebook authenticatio