2011-04-05 13 views
4

我的網站使用FQL從JavaScript稱爲例如:從javascript SDK調用FQL時,什麼原因導致「需要有效簽名」錯誤?

FB.api({ 
    method: 'fql.query', 
    query: 'SELECT uid, name, first_name, pic_big, pic, third_party_id from user where uid in (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY name' 
}, 
function(response) { 
    if(response.error_msg) {    
     alert("Sorry! Something went wrong loading your Facebook friends:"+response.error_msg); 
     return; 
    } 
    process_friends(response); 
}); 

}

他們這裏得到正常FB.login()調用之後。這對大多數用戶來說工作正常。但是一些用戶(或者至少是用戶會話)一直得到「需要有效簽名」的錯誤,並且不能超過這個,即使在FB.login()重新登錄後也是如此。

那個錯誤究竟意味着什麼?我猜oauth標記是無效的?但是令牌來自JavaScript SDK - 我從來沒有碰過它,也沒有簽名。用戶可能處於不一致的登錄狀態嗎?應用程序權限不足?一些奇怪的cookie設置?

回答

5

這意味着您需要一個有效的訪問令牌。

編輯:一個更好的鏈接文檔:https://developers.facebook.com/docs/concepts/login/access-tokens-and-types/

+0

大。但是,爲什麼他們自己的代碼在自己得到它時會有無效的令牌? – Leopd 2011-05-26 17:26:08

+0

我相信,如果你登錄Facebook,你有一個訪問令牌。它們會在一段時間後失效,並且您在撥打電話時必須檢查令牌的有效性。然而,我不確定爲什麼你會在登錄後得到過期令牌,除非舊令牌被散列。 – 2011-05-26 17:31:06

+1

http://developers.facebook.com/docs/authentication/您可以在該頁面上看到:除訪問令牌(access_token參數)外,響應還包含令牌到期前的秒數(expires參數) 。一旦令牌到期,您將需要重新運行上述步驟以生成新的代碼和access_token,但如果用戶已經授權了您的應用,則不會再提示他們這樣做。 – 2011-05-26 17:38:04

相關問題