2011-07-14 48 views
0

我試圖讓好友名單,我得到這個錯誤:Facebook的空的access_token

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /server/url/base_facebook.php on line 970 

這是我使用的代碼:

$facebook = new Facebook(array(
    'appId' => $appID, 
    'secret' => $appSecret, 
    'cookie' => true, // enable optional cookie support 
)); 
$result = $facebook->api('/me/friends/',array('access_token' => $facebook->access_token)); 

這是我回來的數據$ facebook變量:

Facebook Object 
(
    [appId:protected] => 220........ 
    [apiSecret:protected] => 2162e6c1b771...... 
    [user:protected] => 
    [signedRequest:protected] => 
    [state:protected] => 894ad3b36c2ebdcbcf6d4f110641dd4f 
    [accessToken:protected] => 
    [fileUploadSupport:protected] => 
) 

由於某種原因,access_token爲空。 它工作正常,突然停止... 該應用程序已經有權限,我使用的是最新的PHP SDK v3.0.1

請幫助我...我瘋了這個問題...

謝謝, 酒吧。

回答

-1

您需要將您的SDK升級到3.0版:

https://github.com/facebook/php-sdk

編輯:由於您使用您的V.3.0的結構是錯的..沒有更多的$餅乾參數的構造函數。我建議修改文檔。

0

它似乎需要首先解析簽名的請求是這是一個iframe應用程序或網站?

如果它是一個iframe應用程序和用戶已經授權

嘗試。

public function parse_signed_request($signed_request) 
{ 

    list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

    $sig = $this->base64_url_decode($encoded_sig); 
    $data = json_decode($this->base64_url_decode($payload), true); 

    if(strtoupper($data['algorithm']) !== 'HMAC-SHA256') { 
     throw new Exception('bad algorithm'); 
    } 

    $expected_sig = hash_hmac('sha256', $payload, $this->app_secret, $raw = true); 

    if($sig !== $expected_sig) { 
     throw new Exception('Bad signed JSON'); 
    } 

    return $data; 

} 

這將解析簽名的請求。

u得到後的數據的var_dump它和它你也會看到的oauth_token ....

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

這隻有當他使用JS SDK生成令牌時才需要。 –

+0

實際上,我剛剛完成了一個沒有使用JS SDK的facebook畫布應用程序。並且這個代碼在裏面。 – ParparDromi

0

你應該在構造函數中添加$this->load->library('facebook');