以下是我想要完成的一系列简要说明:
我遇到的问题是,当我在iframe画布应用程序上提交表单时,我从Facebook返回的唯一数据是signed_request表单参数。我需要的是表格中的数据。
我已经查看过该问题的各种解决方案(see this link),但我无法让它们发挥作用。当我访问FacebookSession对象时,没有返回会话密钥,因此我无法遵循链接指南。
非常感谢任何可以提供如何执行此操作的指导。
答案 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" />