简短版
以某种方式可以从Facebook正在执行的POST
请求中获取原始请求方法吗?
长版
我想让我当前的Web应用程序Facebook画布框架在最低级别兼容。
关于Facebook Canvas
Facebook上的应用是加载到Canvas框架中的网页.. 当用户在Facebook上加载Canvas应用程序时,我们会在该页面上的iframe中加载Canvas URL。这会导致您的应用显示在标准Facebook Chrome中。
我是 Ruby 程序员,而 Rack Middleware 似乎是解决此问题的合理解决方案。
关于Rack
Rack在支持Ruby和Ruby框架的Web服务器之间提供了一个最小的接口。
关于Rack Middleware
在服务器和框架之间,可以使用中间件
根据您的应用程序需求定制Rack
每个中间件都将使用一个名为env
的对象进行初始化,这个对象是某种哈希。它包含表示HTTP请求方法的密钥REQUEST_METHOD
。
Facebook将所有请求方法转换为POST
。要让我的应用程序在Facebook Canvas上下文中工作,我必须在我的应用程序中添加额外的POST
路由。
相反,我想将env['REQUEST_METHOD']
重写回原始请求方法。
在研究期间,我发现了一颗名为rack-facebook的宝石。
这个宝石正在做我想要的。它从参数中提取['fb_sig']['request_method']
并将其分配给env['REQUEST_METHOD']
。
可悲的是,我还在facebook开发博客上找到了一篇博客文章
所有Canvas应用必须处理signed_request(fb_sig将被删除)
2011年5月10日晚上8:25
关于Facebook签名请求
对于某些类型的应用,签名请求会传递到应用,其中包含一些其他信息字段,即使在请求权限之前也是如此。
我查看了Facebook开发人员文档,发现请求方法或类似内容不再是signed_request
param的一部分。
以某种方式可以从Facebook正在执行的POST
请求中获取原始请求方法吗?