Подтвердить что ты не робот

Facebook javascript sdk fb_xd_fragment?

Я использую javascript sdk для facebook, чтобы вставить подобную кнопку на моей странице.

Что такое fb_xd_fragment? Я вижу, что это добавляет к концу моего URL-адреса, например http://www.example.com/controller/?fb_xd_fragment, и это вызывает некоторую неприятную рекурсивную перезагрузку страницы.

4b9b3361

Ответ 1

После многих недель попытки найти решение, похоже, что необходим собственный URL-адрес канала, как указано здесь:

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 и позволяет комментарии FB в IE. Насколько я могу судить, это единственное решение, доступное в Интернете. Любые дополнительные трюки приветствуются.

Ответ 2

Решено с помощью кнопки iframe.

Ответ 4

Ссылка a1anm хороша для очистки беспорядка, который это вызывает, но есть способ предотвратить его.

Установите 'channelUrl' на локально размещенную страницу канала. Подробнее см. http://threebrothers.org/brendan/blog/facebook-connect-ie-fb_xd_fragment-iframe/.

Ответ 6

Я использовал подход в script, чтобы определить channelUrl на странице моего сайта, но у меня все еще есть несколько обращений к этой странице.

После просмотра результирующего трафика с помощью WireShark я заметил, что они (Facebook) используют channelUrl для некоторых своих внутренних вызовов, а также передают fb_xd_fragment - вместо этого я использовал этот URL для channelUrl, перенаправляя его с моего сайта.

У меня есть несколько кнопок Like на моем сайте с использованием fbml вместо фреймов, а на IE7 я больше не получаю удары от Facebook с параметром fb_xd_fragment.

Не уверен, что это лучшая практика, но, похоже, она работает.

Я установил это значение для channelUrl:

'http://static.ak.fbcdn.net/connect/xd_proxy.php'

Надеюсь, что это поможет.

Ответ 8

афферентные несколько дней исследований и экспериментов со всем решением в Интернете, наконец, я придумал комбинацию этого

Измените голову своей страницы:

<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 помещает это, где вы хотите, чтобы кнопка:

<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>

кредитный доход: http://www.xaluan.com

Ответ 9

"Канал" не работал у меня. Поэтому я просто добавил выше всего другого контента в свой 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();
}