serverfbml возвращает 404 на одной странице, а не клон

Этот случай кажется невероятным.

У меня есть две версии страницы fbml для отображения списка пользователей, которых нужно пригласить. Две страницы возвращают идентичный HTML. Единственная разница в том, что у одного есть URL вида http://mydomain/user/myFriends, а у другого есть URL http://mydomain/facebook/myFriends.

Одна версия работает отлично, а другая застревает, возвращая 404, когда браузер пытается получить serverfbml из facebook. Это попытка как в IE, так и в Firefox.

Что еще более странно, так это то, что если я использую отладчик firefox firebug и щелкаю URL-адрес для получения serverfbml и прошу его загрузить его на отдельной вкладке, я все равно получаю точно такое же поведение. Но я могу посмотреть исходный код, загруженный firefox для обеих страниц, и увидеть, что он ИНДЕНТИЧЕН.

Вот html страницы.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>


  <link type="text/css" rel="stylesheet" href="/css/common.css"/>

</head>

<body id="page-facebook" class="facebook page-facebook-showInviteFriends logged-in ">
<script type="text/javascript" src="/js/jquery-1.4.2.min.js"></script>

<script type="text/javascript" src="/js/common.js"></script>



<html xmlns:fb="http://www.facebook.com/2008/fbml">
<fb:serverFbml width="760" height="346" style="width: 760px; height: 346px;">
    <script type="text/fbml">
        <fb:fbml style="width: 324px; height: 346px;">
            <fb:request-form
                action=""
                method="POST"
                invite="true"
                type="Sample Name"
                content="<fb:req-choice url='' label='Join Now!'></fb:req-choice>
                ">

                <fb:multi-friend-selector
                    condensed="true"
                    showborder="true"
                    actiontext="Invite your friends"
                    email_invite=false
                    import_external_friends=false
                    exclude_ids=""
                    unselected_rows="10"
                    selected_rows="3"
                />
                <fb:request-form-submit import_external_friends="false" label="null"  />
            </fb:request-form>
        </fb:fbml>
    </script>
</fb:serverFbml>
</html>



<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId  : '130456257111111',
      status : true, // check login status
      cookie : true, // enable cookies to allow the server to access the session
      xfbml  : true,  // parse XFBML
      channelUrl : 'http://sample.foobar.com/static/html/channel.html'
    });
  };

  (function(d){
 var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;
 js.src = "//connect.facebook.net/en_US/all.js";
 d.getElementsByTagName('head')[0].appendChild(js);
 }(document));
</script>
<script type="text/javascript" src="/js/facebook.js"></script>
</body>
</html>

person Andrew    schedule 29.09.2011    source источник


Ответы (1)


Я понял проблему. Приложение зарегистрировано на странице холста mydomain/facebook. Поскольку другая страница имеет URL-адрес, отличный от /facebook, вызов завершается ошибкой. Это действительно плохие сообщения об ошибках от Facebook. Нигде в документе очевидно не указано, что требуется, чтобы весь извлеченный контент находился под шаблоном URL-адреса холста.

Поэтому я исправил это, изменив мой официальный URL-адрес холста на корневой путь и изменив способ сопоставления URL-адреса по умолчанию с моим приложением.

person Andrew    schedule 29.09.2011