Facebook Like API - PullRequest
       7

Facebook Like API

0 голосов
/ 25 ноября 2010

У меня возникли проблемы с Facebook, как API.Я создаю кнопку «Мне нравится» со следующим кодом:

<fb:like href="http://www.nettunes.co.za/artist_profile.php?ref=fb&amp;amp;artist_id=<?PHP echo $row->artist_id;?>&amp;amp;show=albums&amp;amp;sub_section=song&amp;amp;id=<?PHP echo $row->song_id;?>" layout="box_count" show_faces="false" width="50" font="arial" title="<?PHP echo ucfirst($row->song_name);?> by <?PHP echo $row->artist_name;?> on www.nettunes.co.za"></fb:like>

Затем я слушаю событие и вызываю функцию javascript, которая запускает кусок PHP, который вставляет подобное в локальную базу данных,трек всех лайков для этого исполнителя.используя этот код:

var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
  '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
    FB.Event.subscribe('edge.create', function(response) {
        var song_id = response.toString().split("&amp;id=");
        likeSong(song_id[1]);
    });

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

У кого-нибудь была подобная проблема раньше?или вы знаете лучший способ сделать это?

большое спасибо

берегите себя, Чреган

1 Ответ

2 голосов
/ 26 ноября 2010

Возможно, вам нужно дождаться полной готовности библиотеки Facebook и проверить ответ. Вы можете сделать это с помощью метода fbAsyncInit, который вызывается Facebook после асинхронной загрузки библиотеки:

<div id="fb-root"></div>
<script type="text/javascript" charset="utf-8">
window.fbAsyncInit = function() {
    FB.init({appId:"1234567890", status:true, cookie:true, xfbml:true, session:null});
    FB.Event.subscribe('edge.create', function(response) {
        if (response)
        {
            var song_id = response.toString().split("&amp;id=");
            likeSong(song_id[1]);
        }
    });
}

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

Вы также должны убедиться, что везде, где определен likeSong, инициализируется до загрузки библиотеки Facebook, и вы добавляете этот прослушиватель событий.

...