2011-10-11 41 views
0

我有一個奇怪的問題,事情奏效停止今天的工作之前,也許它之前壞,但現在是OAuth的2改變後,我有一個接近生產應用程序的煩惱FQL返回「需要有效的簽名」

這是我嘗試

$params = array('method'=>'fql.query','query' => 'SELECT uid2 FROM friend WHERE uid1 = me()'); 
$result = $facebook->api($params); 

我得到:

Exception: 104: Requires valid signature 

以上闡述:

$config = array(
'appId' => 'XXXXXXXXXXXXXXXX', 
'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX', 
); 

$facebook = new Facebook($config); 

$uid = $facebook->getUser(); 

if ($uid){ 
try { 
     $access_t = $facebook->getAccessToken(); 
     $fql = 'SELECT uid2 FROM friend WHERE uid1 = '.$uid; 
     $params = array('method' => 'fql.query', 'query' => 'SELECT uid2 FROM friend WHERE uid1 = '.$uid); 
     $result = $facebook->api($params); 
     echo $result; 
     $friends = $facebook->api(array('method' => 'fql.query', 'query' => $fql, 'access_token' => $access_t)); 
     var_dump($friends); 

} catch (FacebookApiException $e) { 
    echo $e; 
} 

這是我使用來驗證用戶,並得到允許的登錄信息和權限代碼:

$canvas_base_url = "https://apps.facebook.com/myapp/index.php?from=allow"; 
$params = array('scope' => 'publish_stream,email,offline_access,user_status,friends_status,friends_photos,user_photos,xmpp_login,user_online_presence,friends_online_presence', 
'redirect_uri' => $canvas_base_url 
); 
$loginUrl = $facebook->getLoginUrl($params); 

我究竟做錯了什麼?

回答

0

這意味着您使用的訪問令牌無效。它可能已過期。

下面是來自文檔報價在http://developers.facebook.com/docs/authentication/

除了訪問令牌(所述的access_token參數),則 響應包含的秒數,直到令牌過期(在 期滿參數)。一旦令牌到期,您需要重新運行 上述步驟來生成新代碼和access_token,但如果用戶已經授權了您的應用 ,則不會再提示您再次輸入 。如果您的應用需要訪問令牌,且該令牌的有效期限爲 (可能是在您的應用不是 後使用您的應用代表用戶執行操作),則可以請求offline_access權限。

因此,您應該重新運行生成訪問令牌的步驟或需要offline_access權限。