2013-11-15 52 views
0

我有這個簡單的Facebook應用程序。它使用jQuery,並根據Facebook自己的規範和示例代碼進行製作。該應用僅適用於喜歡該頁面的訪問者。Facebook的按鈕使用jquery

我已經成功地在PHP中構建它,但出於其他原因,我需要使用Javascript來創建它。然而,「有用戶,喜歡頁」功能不火,我已經嘗試了十幾個方案是這樣的:event is not fired after clicking facebook like button?

現在,Facebook的文檔,建議使用此:https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe

的也許是最相關我的部分代碼如下所示:

.... 
<body> 
<div id="fb-root"><iframe id="contentIframe" scrolling="no"></iframe></div> 
    <script language="javascript"> 
     $(document).ready(function() { 
      $.ajaxSetup({ cache: true }); 
       $.getScript('//connect.facebook.net/en_UK/all.js', function(){ 
        FB.init({ 
         appId: '247171102105...', 
         channelUrl: 'https://facebook.****.com/customer1/test/channel.html', 
        }); 

        FB.Event.subscribe('edge.create', function(href, widget) { 
         alert('You liked the URL: ' + href); 
        }); 

        FB.getLoginStatus(updateStatusCallback); 
       }); 
      }); 

      function updateStatusCallback() {   
       FB.login(function(response) { 
        if (response.authResponse) { 
         FB.api('/me', function(response) { 
          document.getElementById("contentIframe").src = "kalender.php?userID="+response.id+"&userName="+response.name+"&email="+response.email; 
          //alert(JSON.stringify(response, null, 4)); 
         }); 
        } else { 
         document.getElementById("contentIframe").src = "fallback.php"; 
        } 
       }, {scope:'email,publish_stream,user_photos'}); 
       FB.Canvas.setAutoGrow(); 
      } 
    </script> 
    .... 

您是否有線索,爲什麼alert-command永遠不會被解僱?

回答

0

經過漫長的夜晚,我找到了解決方案。我將PHP和jQuery API結合在一起,以便PHP部分檢查類似內容。 jQuery處理所有其他事情 - 權限,轉發等。這不是很優雅,但我沒有找到其他方式。

這在文件的頂部:

$facebook = new Facebook(array(
     'appId' => '247171102105***', 
     'secret' => '************************', 
    )); 
    $signed_request = $facebook->getSignedRequest(); 
    $like_status = $signed_request["page"]["liked"]; 
    if ($like_status == 1) { 
     $url = "kalender"; 
    } else { 
     $url = "userDoesntLike"; 
    } 

而在Javascript的一部分:

function updateStatusCallback() {   
    FB.login(function(response) { 
     if (response.authResponse) { 
     FB.api('/me', function(response) { 
       document.getElementById("contentIframe").src = "<?=$url;?>.php?userID="+response.id+"&userName="+response.name+"&email="+response.email; 
       //alert(JSON.stringify(response, null, 4)); 
}); 
      } else { 
       document.getElementById("contentIframe").src = "fallback.php"; 
      } 
     }, {scope:'email,publish_stream,user_photos'}); 
     FB.Canvas.setAutoGrow();