2012-03-19 44 views
-2

我試圖組合這兩個SDK。爲了做到這一點,我創建了這個代碼:Facebook Connect - JavaScript和PHP SDK

<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
     <title>New JavaScript SDK & OAuth 2.0 based FBConnect Tutorial | Thinkdiff.net</title> 
     <!-- 
      @author: Mahmud Ahsan (http://mahmud.thinkdiff.net) 
     --> 
    </head> 
    <body> 
     <div id="fb-root"></div> 
     <script type="text/javascript"> 
      var button; 
      var userInfo; 

      window.fbAsyncInit = function() { 
       FB.init({ appId: 'xxxxxxxxxx', //change the appId to your appId 
        status: true, 
        cookie: true, 
        xfbml: true, 
        oauth: true}); 
       showLoader(true); 

     </script> 

     <body> 
      <?php 
       $cookie = preg_replace("/^\"|\"$/i", "", $_COOKIE['fbs_' . "203222769784206"]); 
       parse_str($cookie, $data); 

       $fb = new Facebook(array(
        'appId' => "xxxx", 
        'secret' => "xxxxxx" 
       )); 
       $fb->setAccessToken($data['access_token']); 
       var_dump($fb->getUser()); 
      ?> 
    </body> 
</html> 

但是,它打印int(0)。可能是什麼問題?它錯在哪裏?訪問令牌有問題嗎?

回答

0

此代碼不起作用。這裏是問題 - PHP代碼在服務器端運行,JS/HTML代碼在瀏覽器上運行。您正在運行一個PHP服務器端代碼,這取決於只有在頁面加載並運行後纔會發生的事情。它可能能夠工作在下一個瀏覽量,因爲可能會設置cookie。

另外,在用戶授權應用程序之前,可能不會設置access_token事物。你檢查過嗎?

也就是說,這是獲取用戶數據的一種非常糟糕的方式。解析由FB設置的cookie不是FB支持的方式,可能會違反API的條款和條件。

您必須使用標準JS-SDK FB.Login()來登錄用戶並獲取access_token並將其發送到服務器並在服務器端獲取數據。