如何从Facebook调用一个php页面"喜欢"按钮JS代码


How to call a php page from Facebook "like" button JS code?

我看了一些答案,但我似乎没有找到任何工作。现在我想知道这是否因为我正在工作的网站目前只能通过XAMPP在本地可见。

下面是我尝试过的一些代码片段:

<script> 
  FB.Event.subscribe('edge.create', location.href = 'test.php');
</script>

FB.Event.subscribe('edge.create', function(response) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("POST", "test.php", true);
    xmlhttp.send(); 
});

facebook代码似乎运行,但我的php页面从未被调用。甚至一个简单的警告("您喜欢这个URL:");是行不通的。我可以点赞这个页面,它就会显示在我的facebook墙上。

这是我在body标签后面的内容(从FB复制-粘贴):
<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>

我在某个地方看到一个帖子,声称如果被喜欢的URL与点击按钮的URL不匹配,这将不起作用。嗯,当真正的URL是。com时,我从"www.site-name.local"点击。它似乎工作到喜欢的URL显示在我的FB墙上,但甚至不火。

我刚刚检查了Firebug控制台,我得到:

FB is not defined
    FB.Event.subscribe('edge.create', 

我希望你能朝正确的方向推我一把。

确保FB。init在FB.Event.subscribe被触发之前被调用

好的,这是解决方案。这可能不是解决办法,但它对我有用。

代码和解释张贴在FB Dev网站:

http://developers.facebook.com/docs/guides/web/

<html>
  <head>
    <title>My Great Web page</title>
    </head>
    <body>
      <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"></div>
    </body>
 </html>

工作得很好,直到后来能够"喜欢"一个页面,并在FB上显示,但它没有触发任何动作,一旦按钮被点击。

我决定为网站申请一个App ID。这使一切顺利。

新代码看起来像这样:

<script>
window.fbAsyncInit = function() {
  FB.init({
    appId      : 'my_app_ID_number', // App ID
    status     : true, 
    cookie     : true,
    xfbml      : true,
    oauth      : true,
  });
  // Additional initialization code here
  // Get notified when user likes this
  FB.Event.subscribe('edge.create', function(response){location.href = 'test.php'});            
};
// Load the SDK Asynchronously
(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));

我必须放置"fbi . event"。订阅",否则会导致错误。"FB.Event。订阅"似乎在facebook之前运行"。它"有机会完成自己的工作。如果你在一个页面上有多个"喜欢"按钮,我不知道该怎么做。

无论如何,这对我有用。

相关文章: