【问题标题】:Django facebook app: missing signed_requestDjango facebook 应用程序:缺少签名请求
【发布时间】:2012-08-26 18:49:26
【问题描述】:

受到 Hacker News 20 分钟内写一个 facebook 应用程序的启发,我正在编写一个 facebook 应用程序,并且主页运行良好:显示空的诗歌列表。但是,我无法创建从一个视图到另一个视图的链接。

我正在使用 django,这里有一些代码:

来自 urls.py

urlpatterns = patterns('',
    url(r'^$', 'crosswords.ugly.views.home', name='home'),
    url(r'^create/$', 'crosswords.ugly.views.create', name='create'),

来自views.py:

@canvas_only
def create(request):
    if request.method == 'GET':
        return render(request, 'create.html', {
            'form': PoemEntryForm(request.GET)
        })

来自:模板:home.html

<p>Would you like to create a <a href="/create/">new poem</a>?</p>

如果我可以发布任何特定文件来阐明问题,请告诉我,我会这样做。我在 urls.py 和 home.html 中尝试了 /create/、/create 甚至 create/ 的各种变体。

问题是我不断收到这条消息:

400 错误请求

缺少签名请求。

尝试单击 home.html 中的链接时。 经验丰富的 django、facebook 或开发人员的任何帮助将不胜感激。

【问题讨论】:

标签: python django django-views django-urls pythonanywhere


【解决方案1】:

我找到了问题的答案:

问题是我没有使用 urls.py 中定义的&lt;a href="site{% url url_name %}"&gt;...。在这种情况下,&lt;a href="site{% url create %}"&gt;... 创造了奇迹:)

【讨论】:

    【解决方案2】:

    花了几个小时试图弄清楚为什么我的一个简单链接 应用程序页面会显示可怕的消息“400 Bad Request - Missing signed_request”。 看到这个帖子,终于开始解谜了。

    Slow load facebook canvas app when click on links (if target top)

    简而言之:您不需要在视图上使用任何装饰器(例如 @canvas_only 或 @facebook_required)。相反,如建议的那样,在您第一次获得该信息(例如 FB 用户 ID 和名称)时,将信息保存在会话中。我是在我的主页上做的(唯一一个用@canvas_only 装饰的视图)。 注意事项:为了能够在会话中存储某些内容,您需要在 settings.py 中启用它:在 MIDDLEWARE 部分中应该已经可以了,但也可以通过取消注释条目 'django. contrib.sessions'.
    现在执行一个同步数据库(python manage.py syncdb)以确保创建了相关表(我假设会话存储在数据库中)。 如果您需要它来进一步调用 FB API,请同时存储 access_token 在会话中(request.session ['signed_request'] = access_token)

    真正导致问题的原因是重定向到视图末尾的页面,例如。使用redirect() 或使用HttpResponseRedirect()。这会触发 GET 请求而不是 POST。
    哦,顺便说一句,我有没有提到所有的 GET 请求都变成了 POSTS?哈哈哈它变得混乱嘿? 此外,还需要考虑一些严重的安全隐患。

    我自己也刚开始玩这些东西,所以请务必将目前的信息作为提示和线索,而不是作为诫命。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多