如何在iframe facebook应用程序中使用FB.Connect.streamPublish?

时间:2010-01-11 22:27:55

标签: facebook iframe publish connect

我正在制作一个简单的基于iframe的脸书应用。我有以下代码来调整iframe的大小:

FB_RequireFeatures(["Connect"], function(){
  FB.XdComm.Server.init('/xd_receiver.htm');
  FB.CanvasClient.startTimerToSizeToContent();
  FB.CanvasClient.syncUrl();
});

我想添加一个链接,该链接将显示一个弹出窗口,允许用户将应用定义的图像/链接发布到用户的墙上。为了让事情最初起作用,我尝试在点击事件中使用以下代码:

FB.Connect.streamPublish('');

然而,没有任何反应。我试过添加:

FB.init(<?=API_KEY?>, '/xd_receiver.htm');

FB_RequireFeatures 函数内,之前,之后......没有运气。什么都没发生。没有错误被抛出。没有。有什么想法吗?

4 个答案:

答案 0 :(得分:1)

有关使用Connect:

设置使用iFrame应用程序进行流发布的完整说明,请查看此页面

http://thetechnicalexperience.blogspot.com/2010/02/how-to-use-fbconnectstreampublish.html

答案 1 :(得分:0)

检查您是否有:(某些来自http://wiki.developers.facebook.com/index.php/Connect/Setting_Up_Your_Site#Referencing_Facebook_Connect_on_Your_Site

  • 创建了xd_receiver.htm,并且它位于您域的根目录
  • 包含FeatureLoader.js.php位于文档 BODY 的顶部
  • 将问题中的javascript(例如FB_RequiresFeatures等)添加到文档底部

我的应用中当前正常运行的代码示例:

<script type="text/javascript">
   window.onload = function() {
        FB_RequireFeatures(["XFBML", "Connect"], function() {
           FB.Facebook.init("...my api key...","xd_receiver.htm");
           FB.CanvasClient.syncUrl();
        });
   };
</script>

您可以从FB_RequireFeatures调用中省略“XFBML”,并将路径更改为xd_receiver.htm,它应该可以正常工作。

此外,请仔细检查应用程序的Connect URL(通过Facebook中的Developer App设置)是否指向xd_receiver.htm文件的父级。因此,如果您的应用托管在http://www.mydomain.com,然后查看代码示例,那么您的xd_receiver.htm将位于http://www.mydomain.com/xd_receiver.htm,并且您希望将http://www.mydomain.com作为Connect URL

如果仍然无效,请尝试安装Firebug(或类似工具)以查看网络流量。当我开始使用它时,Facebook Javascript API将无声地失败,只有通过检查来回的请求我才发现Facebook不喜欢我的Connect URL。

为了测试一切正常,我很想使用

FB.Connect.streamPublish();

而不是您发布的行,因为它应该弹出一个对话框,并且显然是作为一个工作示例给出的。我不确定如果你只是传递一个空字符串作为参数会发生什么。

最后,有许多基于IFrame的Facebook应用程序 - 如果你发现一个正在做你喜欢的事情,你可以随时查看他们的Javascript以了解他们是如何实现它的。或者换句话说,Facebook充满了IFrame应用程序代码示例。

答案 2 :(得分:0)

您必须设置连接网址才能使用javascript库。尝试将您的书签网址设置为http://apps.facebook.com/yourapp,看看是否有帮助。

答案 3 :(得分:0)

@Cyphus

是的,当我说'去应用'时,我的意思是转到facebook上的应用页面(apps.facebook.com/myapp)。目前,我的回调网址仅设置为画布。一旦我尝试使用回调URL同时使用画布和连接URL,每当我尝试转到应用程序时,我都会被重定向到实际的回调URL本身,而不是加载到facebook中的iframe。我没有直接从我的服务器请求它,因为这有点失败了拥有Facebook应用程序的目的。