我正在制作facebook iframe应用程序
我正在使用自己的表单数据创建一个请求表单。我该怎么办才能处理数据?
如果我把动作=“http://apps.facebook.com/ [appName] / abc.php”,即
<fb:serverfbml>
<script type="text/fbml">
<fb:fbml>
<fb:request-form action="http://apps.facebook.com/[appName]/abc.php" method="post" type="abc" content="abc">
<textarea name="pm" fb_protected="true" ></textarea>
<fb:multi-friend-selector showborder="false" max="35" actiontext="test" email_invite="true" bypass="cancel" />
</fb:request-form>
</fb:fbml>
</script>
</fb:serverfbml>
然后结果很有趣... facebook app的iframe里面有一个facebook页面!
但如果我把action =“http:// [my own domain / facebook connect url] /abc.php”,即
<fb:serverfbml>
<script type="text/fbml">
<fb:fbml>
<fb:request-form action="http://[my own domain / facebook connect url]/abc.php" method="post" type="abc" content="abc">
<textarea name="pm" fb_protected="true" ></textarea>
<fb:multi-friend-selector showborder="false" max="35" actiontext="test" email_invite="true" bypass="cancel" />
</fb:request-form>
</fb:fbml>
</script>
</fb:serverfbml>
然后结果页面将呈现WITHOUT facebook模板(这意味着丢失所有顶级Facebook横幅和底部facebook栏,如facebook聊天等)
任何人都知道什么是错的?
非常感谢您的阅读
答案 0 :(得分:5)
target =“_ top”的关键是你必须将它放在请求表单和多朋友选择器上,以便它分别处理提交和取消。
请求表单需要target =“_ top”,以便表单在提交时加载到顶部框架中,但取消功能由多朋友选择器控制,而不是请求表单。因此,你需要多朋友选择器上的target =“_ top”,以便取消操作将加载到顶部框架中。
现在,我只是希望Facebook允许取消“无”操作,只会隐藏框架......
答案 1 :(得分:3)
新答案: Facebook已经开始逐步淘汰FBML,并强烈鼓励开发人员切换到Requests 2.0。使用新的FB.ui({method:'apprequest',...});在JavaScript SDK中,这是一种更简单的方法。它还支持Facebook外页面http://af-design.com/blog/2011/02/17/using-facebook-requests-to-promote-a-website/
OLD答案: 我发现传递FBML作为fb:serverfbml的属性有效。 &lt; fb:serverfbml fbml =“{HTML Escaped FBML Here}”&gt;&lt; / fb:serverfbml&gt; 我在这里发布了我的调查结果:http://af-design.com/blog/2010/11/23/fbserverfbml-on-canvas-iframe/
答案 2 :(得分:1)
我处理这个问题的方法是让我的表单处理器页面不发出输出,除了“&lt; fb:redirect&gt;”这指向主应用程序。
答案 3 :(得分:1)
你是如何使用这个&lt; fb:重定向&gt; ?
好吧我发现它尝试添加target =“_ top”
http://apps.facebook.com/myapp'label ='立即加入'/&gt;“ 行动= “http://apps.facebook.com/myapp” 目标=“_顶部” 邀请= “真” &GT;