2

我有一個簡單的登錄按鈕,指導用戶:錯誤100此授權碼已被使用

https://graph.facebook.com/oauth/authorize?client_id=APP_ID&redirect_uri=CALLBACK_URL&type=web_server&scope=publish_stream,offline_access,email,friends_likes,user_likes

CALLBACK_URL回調請求處理機抓起code參數,並將其傳遞給:

https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&code=CODE&redirect_uri=REQUEST_URL

,預計含有該訪問令牌的響應(注意,REQUEST_URL是來自Facebook傳入重定向的URL) 。這成功99%的時間,但偶爾我得到這個:

{"error":{"message":"This authorization code has been used.", "type": "OAuthException","code": 100}}

我知道代碼只能使用一次並且有10分鐘的使用壽命,但是我們會立即兌換代碼,並且我們的日誌記錄表明我們只是將它發送給訪問令牌一次。

有沒有其他人看過這個?

是否有可能Facebook發回錯誤的錯誤?

在保護功能 parseSignedRequest($signed_request
+0

根據你的描述,這看起來像FB的一面。你應該仔細檢查你是否只發送一次請求,然後[提交錯誤報告](https://developers.facebook.com/bugs/)。 – 2013-03-06 19:45:10

+0

我可以證實這一點,你可以提交報告併發佈一個鏈接,我只在android上得到這個 – Akshat 2013-03-25 12:24:38

回答

0

剛剛返回之前加上這些行

/* 
* This method sets new code, and does not update persistent data, 
* that leads to persistent data loss and duplicate call to oAuth. 
* Duplicate call to oAuth with same auth code leads to error. 
* So persistent data must be changed alongside code changes. 
*/ 
$this->setPersistentData('code', $data['code']); 

這是一個臨時的解決方案,我不是一個Facebook開發人員。