facebook javascript sdk fb_xd_fragment?
我正在使用facebook javascript sdk在我的页面中嵌入一个类似按钮。facebook javascript sdk fb_xd_fragment?
什么是fb_xd_fragment?我看到它追加到我的网址的末尾,如http://www.example.com/controller/?fb_xd_fragment,这导致一些讨厌的递归重新加载页面。
几个星期试图找到一个解决方案,它看起来像需要什么之后是这里提到的自定义频道网址:
http://developers.facebook.com/docs/reference/javascript/FB.init
我所做的只是创建channel.html文件,其中包含此单行:
<script src="http://connect.facebook.net/en_US/all.js"></script>
然后,我添加了channelUrl:行,以便最后的结果是这样的:
<div id="fb-root"></div> <script>
window.fbAsyncInit = function() {
FB.init({
appId : 'MY APP ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
channelUrl : 'http://www.example.com/channel.html' // custom channel
}); };
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());</script>
确保在xfbml后添加逗号:如果它是最后一行,则为true。我不熟悉Javascript,所以我不知道我是否充分利用了这一点,但我知道它防止了fb_xd_fragment问题,并允许在IE中使用FB注释。据我所知,这是在线提供的唯一解决方案。任何进一步的调整是受欢迎的。
我这样做了,并且还在我的标记中添加了xmlns:fb =“http://www.facebook.com/2008/fbml”,现在它正在工作!非常讨厌的问题。我添加了你在那里发布的代码,然后在页面的下面打印出一个像框和评论框。 – 2011-03-16 12:09:29
你在channelURL中输入的最终URL是什么?我们在这里试过了,在我们的服务器上有一个自定义的html页面,它试图创建一个“Facebook页面”,真的很奇怪。 – Allov 2011-04-08 17:38:10
我不得不添加xmlns:fb =“facebook.com/2008/fbml”;正如费兰所做的那样,或者它会不断地进行民意调查这是修复它的最后一点:) – Designer023 2012-06-26 10:06:31
此漏洞的修复程序可以在这里找到:
http://wiki.github.com/facebook/connect-js/custom-channel-url
此链接已被破坏...任何人有更新? – philfreo 2010-10-26 18:41:30
虽然以上从GitHub似乎是回答另一个问题的答案,但它工作得很好。 更新:链接已损坏 - 请尝试http://blog.colnect.com/2010/10/fbxdfragment-bug-workaround.html
a1anm的链接有助于清理此引起的混乱,但有一种方法可以防止它发生。
将'channelUrl'设置为本地托管的频道页面。详情请参阅http://threebrothers.org/brendan/blog/facebook-connect-ie-fb_xd_fragment-iframe/。
嗨,我可以直接把channelUrl:http://connect.facebook.net/en_US/all.js y nid另一个html ??? – Leon 2012-03-27 09:53:57
要约在几天的研究和expriment与去年互联网上所有的解决方案,我想出这个
变化结合您的网页你的头:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" lang="en-US">
这里cocde把这个地方你想likeit按钮:
<div class="yourclass" style="z-index: 10;">
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js" ></script>
<script>FB.init({appId: '1234yourappidhere', status: true, cookie: true, xfbml: true});</script>
<fb:like href="http..yourencodedurlswillputhere" layout="button_count" width="150" action="recommend" colorscheme="light"></fb:like></div>
<script> document.getElementsByTagName('html')[0].style.display='block';</script>
海峡黑客并没有为我工作。 所以,我只是在上面我的PHP所有其他内容文件添加一些代码,301重定向到URL不fb_xd_fragment另外:
$url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
if (isset($_GET['fb_xd_fragment'])) {
$url = str_replace("?fb_xd_fragment=","",$url);
header("HTTP/1.1 301 Moved Permanently");
header("Location: {$url}");
exit();
}
与像按钮的iframe解决。
我使用脚本内的方法来定义channelUrl到我网站上的一个页面,但我仍然有多个命中返回到该页面。我注意到他们(Facebook)使用channelUrl进行了一些自己的内部调用,同时也传递了fb_xd_fragment - 我改用channelUrl的URL,将它从我的站点重定向。
我有我的网站上使用fbml而不是框架的多个Like按钮,并且在IE7上,我不再使用fb_xd_fragment参数从Facebook获得回击。
不知道这是否是最佳做法,但它似乎工作。
我设置了channelUrl这个值:
'http://static.ak.fbcdn.net/connect/xd_proxy.php'
希望这有助于。
我得到相同的行为,服务器遇到两个请求 - 1与标准的URI;另一个使用URI?fb_xd_fragment。然而,这似乎只发生在IE - 更具体的IE7。你有没有设法获得更多的信息呢?所有这些都来自FB:http://forum.developers.facebook.com/viewtopic.php?pid=232516并且打开了一个错误:http://bugs.developers.facebook.com/show_bug.cgi?id=9777 – 2010-06-24 09:46:31
是的,对于IE7非常具体,我使用了Iframe版本,希望有人会修复这个错误。 – 2010-06-27 22:10:21