从Facebook Canvas iframe应用程序发布时表单数据丢失

时间:2011-01-13 20:21:02

标签: facebook-c#-sdk

以下是我想要完成的一系列简要说明:

  • 将Facebook C#SDK与asp.net MVC一起使用
  • 将自定义表格数据从Facebook画布iframe应用程序发布到服务器
  • 我目前正在构建提供的MVC示例

我遇到的问题是,当我在iframe画布应用程序上提交表单时,我从Facebook返回的唯一数据是signed_request表单参数。我需要的是表格中的数据。

我已经查看过该问题的各种解决方案(see this link),但我无法让它们发挥作用。当我访问FacebookSession对象时,没有返回会话密钥,因此我无法遵循链接指南。

非常感谢任何可以提供如何执行此操作的指导。

3 个答案:

答案 0 :(得分:1)

ow3n is correct您需要在帖子数据中加入signed_request。对于C#Facebook应用程序(假设Razor视图),这意味着将其添加到您的表单中:

<input type="hidden" value="@Request.Params["signed_request"]" name="signed_request" />

答案 1 :(得分:0)

我遇到了同样的问题并最终做到了这一点:

<form method="post" id="form1" target="_top">
<input type="text" id="sometext" />
<input type="submit" id="button" />
</form>

<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#button").click(function () {
var action = '<%= Url.CanvasAction("Create", "Home") %>';
action += "?sometext=" + escape($("#sometext"));
$("#form1").attr("action", action);
});
}
</script>

这方面的缺点是你现在沿着查询字符串发送数据,其中限制IE最大约2048个字符,然后切掉它,最糟糕的是它暴露给那台机器的用户,特别是如果它是在公共咖啡馆酒吧或其他什么,他们可以看到最后一个人发布到您的应用程序!

我也想知道为什么Facebook上的brainyacks不能接受发布给他们的表单数据,只是将其逐字地转发回应用程序 - &gt;白痴!

答案 2 :(得分:0)

我在使用画布应用传递POST或GET数据时遇到了同样的问题,并在this post找到了答案。只需将此输入添加到表单:

<input type="hidden" value="<?php echo $_POST["signed_request"]?>" name="signed_request" />