facebook javascript sdk fb_xd_fragment? - PullRequest
23 голосов
/ 02 июня 2010

Я использую Facebook Javascript SDK для вставки кнопки «Мне нравится» на моей странице.

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

Ответы [ 9 ]

23 голосов
/ 15 февраля 2011

После многих недель попыток найти решение, похоже, что необходим специальный 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. Насколько я могу судить, это ЕДИНСТВЕННОЕ решение, доступное онлайн. Любые дальнейшие изменения приветствуются.

3 голосов
/ 13 апреля 2011

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

1 голос
/ 21 апреля 2011

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

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

У меня есть несколько кнопок «Мне нравится» на моем сайте, использующих fbml вместо фреймов, а в IE7 я больше не получаю ответную реакцию от Facebook с параметром fb_xd_fragment.

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

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

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

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

1 голос
/ 17 февраля 2011

Ошибка и исправление теперь задокументированы на http://developers.facebook.com/docs/reference/javascript/fb.init/

1 голос
/ 17 ноября 2010

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

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

1 голос
/ 19 августа 2010

Исправление для этой ошибки можно найти здесь:

http://wiki.github.com/facebook/connect-js/custom-channel-url

0 голосов
/ 05 апреля 2011

Взлом Channel не работает для меня. Поэтому я просто добавил над всем другим содержимым в своем 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();
}
0 голосов
/ 08 января 2011

В течение нескольких дней проведите исследование и экспериментирование со всеми решениями в Интернете. Наконец, я придумаю комбинацию этого

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

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

здесь кокд положил туда, где вы хотите, чтобы кнопка likeit была:

* +1007 *

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

0 голосов
/ 13 октября 2010

Хотя приведенный выше ответ от github кажется ответом на другой вопрос, он работает хорошо. ОБНОВЛЕНИЕ: ссылка не работает - попробуйте http://blog.colnect.com/2010/10/fbxdfragment-bug-workaround.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...