我正在制作一个简单的基于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 函数内,之前,之后......没有运气。什么都没发生。没有错误被抛出。没有。有什么想法吗?
答案 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)
我的应用中当前正常运行的代码示例:
<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应用程序的目的。