الفيسبوك مثل API
-
28-09-2019 - |
سؤال
أواجه بعض المشاكل مع Facebook مثل API. أقوم بإنشاء زر مثل الرمز التالي:
<fb:like href="http://www.nettunes.co.za/artist_profile.php?ref=fb&amp;artist_id=<?PHP echo $row->artist_id;?>&amp;show=albums&amp;sub_section=song&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 ، أن Ajax يدير قطعة من 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("&id=");
likeSong(song_id[1]);
});
المشكلة هي أنها لا تسمي دائمًا وظيفة Likesong هذه وإضافة ما شابه إلى قاعدة البيانات.
هل كان لدى أي شخص مشكلة مماثلة من قبل؟ أو هل تعرف طريقة أفضل للقيام بذلك؟
ًشكراً جزيلا
اعتني بنفسك ، Chregan
المحلول
ربما تحتاج إلى انتظار أن تكون مكتبة 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("&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 وإضافة مستمع الحدث هذا.
لا تنتمي إلى StackOverflow