1

我的画布/iframe Facebook 应用程序中有一个简单的表单,我正在尝试将值作为 POST 传递。现在,通过阅读所有关于 SO 和 FB 最新文档的所有内容,据我了解,通过 POST 表单发送的所有数据都可以在接收端从 $_REQUEST 对象访问。

我还在 SO 上的另一个线程上读到,为了使 POST 表单正常工作,您需要传递一个名为“signed_request”的输入,其值为当前的signed_request(否则我的签名请求工作正常......所有登录和身份验证东西工作正常)。官方 FB 文档中的任何地方都没有提到这一点。

所以我的问题是 $_REQUEST 对象中返回的所有内容都是签名请求,以及一堆其他会话内容。我的表单输入无处可寻。

我可以阅读它们的唯一方法是将表单的方法设置为“REQUEST”,这甚至不是真正的表单方法。但随后它会接受我所有的输入并将它们作为 URL 中的 GET args 发送。可怕。这是我的画布应用程序中的一个示例页面,其中只有一个我用来尝试调试的表单(省略了所有身份验证内容):

<form enctype="application/x-www-form-urlencoded" method="POST" target="_top" id="my_form" action="https://apps.facebook.com/myfakeapp/form_test.php">
<input type="text" name="test1" value="58" />
<input type="text" name="test2" value="123" />
<input type="text" name="test3" value="434" />
<input type="text" name="test4" value="645" />
<input type="text" name="signed_request" value="<? echo $_REQUEST['signed_request']; ?>">
<input value="Submit Answers" type="submit">
</form>

FB 文档令人困惑,因为其中一些文档指的是他们为处理画布应用程序的 POST 请求的旧应用程序所采用的 beta 迁移模式。

4

1 回答 1

1

您正在结合两种不同的技术......提交带有 target=_top 和 action=apps.facebook.com/xxx 的表单的目的是让 Facebook 自动发送 signed_request 参数。如果您自己发送,则应使用页面的“外部”地址作为操作,并关闭目标属性。通过使用 target=_top,您正在重新加载整个框架并将您的表单数据发送到 Facebook,这当然会忽略它。

于 2011-10-10T20:00:36.263 回答