2011-05-30 79 views
2

因此,我使用Facebook註冊插件以及Javascript SDK(使用xfbml顯示)。註冊工作正常,我的代碼處理它看起來像這樣:使用Facebook註冊插件後無法獲取用戶

# Check if the form has been submitted. 
if(array_key_exists('signed_request', $_REQUEST)) 
{ 
    define('FACEBOOK_APP_ID', 'REMOVED'); 
    define('FACEBOOK_SECRET', 'REMOVED'); 

    function parse_signed_request($signed_request, $secret) { 
     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     // decode the data 
     $sig = base64_url_decode($encoded_sig); 
     $data = json_decode(base64_url_decode($payload), true); 

     if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
      error_log('Unknown algorithm. Expected HMAC-SHA256'); 
      return null; 
     } 

     $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true); 
     if ($sig !== $expected_sig) { 
      error_log('Bad Signed JSON signature!'); 
      return null; 
     } 

     return $data; 
    } 

    function base64_url_decode($input) { 
     return base64_decode(strtr($input, '-_', '+/')); 
    } 

    if ($_REQUEST) { 
     # Load the Users model. 
     $this->load->model('Users'); 

     # Save the data from the form. 
     $response = parse_signed_request($_REQUEST['signed_request'], FACEBOOK_SECRET); 

     # Save the user's email. 
     $user['email'] = $response['registration']['email']; 

     # Boolean that stores if the user registered through FB. 
     $facebook; 

// the rest is irrelevant 

所以一旦用戶註冊我重定向他們回到主頁。當我登錄我的Facebook帳戶時,我的網站顯示在我使用的應用程序下(隱私設置中)。

儘管如此,當我嘗試在主頁上使用PHP SDK時,用戶仍未出現身份驗證。以下代碼將$ user_id和「無效」作爲$無效打印出「0」。以下代碼適用於主頁:

require 'application/sdk/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'REMOVED', 
    'secret' => 'REMOVED', 
)); 

// Get User ID 
$user = $facebook->getUser(); 

echo $user; 
$isvalid; 

try { 
    $facebook->api('/me'); 
    $isvalid = true; 
} catch (FacebookApiException $e) { 
    $isvalid = false; 
    echo "not valid"; 
} 

我在做什麼錯?

謝謝!

回答

3

拉我的頭髮,在過去8小時後,我發現了一個Facebook developer blog post底部這塊寶石:

如果你只使用PHP SDK的 身份驗證,請立即升級。如果 您正在使用JavaScript SDK 與PHP SDK 一起登錄,您將需要等待 JavaScript SDK升級(即將進入4 周)。由於cookie的 格式發生更改,因此PHP SDK 的3.0.0版不會與當前的 JavaScript SDK合作。

使用舊SDK的時間!