2011-06-16 120 views
1

這是我前一個問題的延伸。隨着這個問題的解決,我仍然遇到錯誤。我正在關閉Javascript指南here。我現在處於頁面的最後一個代碼段,即底部。在我的頁面的頂部,我有下面的代碼(APP ID祕密ID在我的代碼中定義):Further Facebook登錄Javascript錯誤

<?php 

define('YOUR_APP_ID', '**APP ID**'); 
define('YOUR_APP_SECRET', '**SECRET ID**'); 

function get_facebook_cookie($app_id, $app_secret) { 
    $args = array(); 
    parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    ksort($args); 
    $payload = ''; 
    foreach ($args as $key => $value) { 
    if ($key != 'sig') { 
     $payload .= $key . '=' . $value; 
    } 
    } 
    if (md5($payload . $app_secret) != $args['sig']) { 
    return null; 
    } 
    return $args; 
} 

$cookie = get_facebook_cookie(YOUR_APP_ID, YOUR_APP_SECRET); 

$user = json_decode(file_get_contents(
    'https://graph.facebook.com/me?access_token=' . 
    $cookie['access_token'])); 

?> 

但現在我得到這些錯誤(谷歌搜索他們並沒有拒絕任何事有用的):

同樣,我的應用程序ID是正確顯示在錯誤代碼。

Notice: Undefined index: fbs_**MY APP ID** in C:\wamp\www\_header.php on line 10 
Notice: Undefined index: sig in C:\wamp\www\_header.php on line 18 

它可能是一個與WAMP相關的問題嗎?提前致謝。

回答

1

檢查您的支架。很多時候,括號分層結構之間的簡單混淆可以解決這些令人討厭的錯誤。

2

這意味着$ COOKIE [ 'FBS'。$ APP_ID]不存在,這意味着COOKIE VAR是空的(或不設置)

+0

@geneis我很清楚這一點。如果您閱讀我的問題,我多次提到** APP ID **和** SECRET ID **被替換爲我的代碼中的實際ID。 – tnw 2011-06-16 15:18:20

+1

編輯我的回答 – genesis 2011-06-16 15:22:19

+0

Cookie var將如何爲空?我在下面定義它:'$ cookie = get_facebook_cookie(YOUR_APP_ID,YOUR_APP_SECRET);'另外,我相當確定它在PHP中定義的位置並不重要,但它值得一試......我將定義在函數之上並且沒有改變任何東西。 – tnw 2011-06-16 15:25:36

0

我已經添加了一個簡單的檢查來檢查cookie中的var。 這適用於我。

function get_facebook_cookie($app_id, $application_secret) 
{ 
    $args = array(); 
    if (!isset($_COOKIE['fbs_' . $app_id])) { 
    //BOOHOO, NO COOKIE; 
    return $args; 
    } 

    parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); 
    ksort($args); 
    $payload = ''; 
    foreach ($args as $key => $value) { 
    if ($key != 'sig') { 
     $payload .= $key . '=' . $value; 
    } 
    } 
    if (md5($payload . $application_secret) != $args['sig']) { 
    return null; 
    } 
    return $args; 
} 
0

爲什麼不使用Facebook PHP SDK?我做了它這個樣子,這對我的作品雖然沒有爲應用程序祕密檢查:

// Read the cookie created by the JS API 
$cookie = trim($_COOKIE['fbs_' . FB_APP_ID], '\\"'); 
parse_str($cookie, $data); 

// Startup the Facebook object 
$fb = new Facebook(array(
    'appId' => FB_APP_ID, 
    'secret' => FB_APP_SECRET 
)); 

// Say we are using the token from the JS 
$fb->setAccessToken($data['access_token']); 

// It should work now 
var_dump($fb->getUser()); 

注意$ COOKIE [「FBS」。在JavaScript上調用FB.login方法後,FB_APP_ID]變量纔可用。

另外,還要確保你允許初始化JS API時,像這樣從PHP讀取cookie:

FB.init({ 
    appId : 'YOUR APP ID', 
    cookie : true 
}); 

希望它幫助。

鏈接到PHP SDK的github上:https://github.com/facebook/php-sdk/