обновить окно после Facebook, как - PullRequest
4 голосов
/ 22 сентября 2011

Я создал приложение на странице компании, чтобы добавить больше вкладок / страниц с «like-gate», чтобы гарантировать, что пользователю нравится наша страница, прежде чем двигаться вперед. Подобные ворота расположены в месте, скажем, «index.php», если пользователю нравится наша страница, «index2.php» включен, они НЕ нравятся нам, «index1.php» вместо этого включает include. Это все работает правильно.

Моя проблема в том, что я хотел бы включить кнопку «Мне нравится» внутри страницы «index1.php» (если они нам не нравятся). Я включил кнопку, позволяющую пользователю понравиться нам, но нужно обновить после нажатия этой кнопки, чтобы пользователь мог снова быть оценен в «Like-Gate» и соответственно перенаправить.

Код ниже позволяет пользователю нравится, но не перенаправляет, как я хотел бы. Я посмотрел примеры на странице разработчика fb, но я новичок в fb app dev и не могу понять мою ошибку. Любая помощь будет оценена, надеюсь, это достаточно информации, но ответьте, если вам нужно больше. Спасибо за любую помощь, которую вы можете предоставить.

    <div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
  FB.Event.subscribe('edge.create',
    function() {
        top.window.location = 'http://www.facebook.com/pages/TAG_Communications/122751567742494?sk=app_243094502403141';
        }
    );
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-like" data-href="http://www.facebook.com/pages/TAG_Communications/122751567742494" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div>

1 Ответ

8 голосов
/ 22 сентября 2011

Ух ты, я пытаюсь сделать то же самое и искал это в то же самое время, когда ты отправил этот вопрос!Не так много об этом.

Я сталкивался с http://www.techjam.gr/2011/web-design/execute-javascript-facebook-button-clicked/, который объясняет, что делать, чтобы запустить скрипт обратного вызова после очень четкого нажатия кнопки.Я вижу, что вы уже делаете это по большей части, но, возможно, есть несколько объяснений, которые вы пропустили или не указали.

Также у меня возникли большие проблемы при попытке перенаправить родительский элементкадров, потому что это вызывает междоменную ошибку безопасности доступа к JavaScript.Не уверен, что это часть твоей проблемы.В моем случае я планирую просто перенаправить свою страницу iframe из файла no-fan.php в файл fan.php по щелчку мыши - мне не нужно переоценивать, являются ли они фанатами или нет, с моим кодом fangate, если онинажал кнопку «Нравится».

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

ОБНОВЛЕНИЕ:

Получил работу с помощью по ссылке выше!Вот что я сделал (код ниже): Обязательно используйте обычный код FB.init.Добавьте скрипт обратного вызова с кодом перенаправления над кнопкой.Добавьте xfbml версию кнопки «Нравится».Вот и все!

Обратите внимание, что я действительно использовал top.window.location и в любом случае отправил его в свой оценочный код fangate.Причина в том, что если вы просто перенаправляете фрейм, он оставляет остальную часть страницы как есть, и у него все еще есть кнопка в стиле Facebook рядом с заголовком.Обновление всей страницы приводит к тому, что все выглядит так, как должно, и избегает путаницы.

код:

            <div id="fb-root"></div>
            <script src="http://connect.facebook.net/en_US/all.js"></script>
            <script>
                FB.init({
                    appId :'your id here',
                    status : true, // check login status
                    cookie : true, // enable cookies to allow the server to access the session
                    xfbml : true, // parse XFBML
                    channelUrl : 'full path to file', // channel.html file
                    oauth : true // enable OAuth 2.0
                });
            </script>


        <script>
            FB.Event.subscribe('edge.create', function(href, widget) {
                top.window.location = 'your tab url';
            });
        </script>

        <div id="fb-root"></div>
        <script>(function(d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) {return;}
            js = d.createElement(s); js.id = id;
            js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));</script>

        <div class="fb-like"><fb:like href="your page you want to like" send="false" layout="button_count" width="200" show_faces="false"></fb:like></div>
...