2011-08-24 61 views
3

當使用/ me/feed端點將帖子發送到我在Facebook上的源時,我又收到了各種各樣的錯誤。如何以編程方式告訴圖形API錯誤是哪種錯誤?

  • 當我發出同樣的帖子兩次,我得到了一個400 http狀態,但此錯誤:

    {"error":{"type":"OAuthException","message":"(#506) Duplicate status message"}} 
    
  • 當用戶刪除權限後我得到了400 http狀態,但此錯誤:

    {"error":{"type":"OAuthException","message":"(#200) The user hasn't authorized the application to perform this action"}} 
    
  • 用戶刪除我得到了400 http狀態的應用程序,該犯錯之後或:

    {"error":{"type":"OAuthException","message":"Error validating access token: The session has been invalidated because the user has changed the password."}} 
    

我希望能夠重新驗證用戶是否他已刪除我們的應用程序或刪除我們發佈許可。我應該怎麼知道?所有的錯誤都返回狀態代碼400。所有的錯誤都返回類型「OAuthException」。其中一些人在消息中有一個狀態碼。這是我可以檢查並保證它不會改變的東西嗎?那第三個呢?是唯一一個沒有代碼的特定錯誤?有沒有這些代碼的列表?

+1

我知道我可以撥打其他電話來檢查用戶是否已登錄或有權限。但是這真的打敗了錯誤消息和代碼不是嗎?我不想每次進行圖形API調用時都要打2或3個電話。 – jasongregori

+0

我可以看到,這些錯誤消息說的是*清除*。問題是我在facebook的開發網站上找不到任何東西,說明*正確的*方法是知道這是某種類型的錯誤。將錯誤代碼始終以格式「(#xxx)」包含在消息的第一部分中?一個錯誤的訪問令牌*總是會返回第三條錯誤消息嗎?我需要保證,所以我的應用程序正確和正確地工作請修復這個Facebook。 – jasongregori

回答

0

最好的方法/我看看如果返回的任何異常。 Feed可能會帶來混合的結果,特別是如果用戶未授予應用程序讀取Feed的權限。

您還可以對user.get進行方法調用,以確定用戶授予該應用程序的權限。

+0

這真的不是我希望的答案,但現在它是最好的。每次打電話時都要檢查用戶是否被授權,另一個用於檢查是否有權限。希望Facebook將修復錯誤信息。 – jasongregori

0

在調用/ me/feed之前,您應該驗證用戶會話。

通過這種方式,您可以測試它們是否已登錄並重新路由/發送以相應登錄。

最簡單的方法是首先在/ me/feed上執行GET操作,看看是否有數據或錯誤。

如果錯誤是安全下注,授權已經下降。你應該讓用戶重新登錄/授權應用程序。

第三個錯誤是特定的,因爲此時您知道用戶在流中的位置。他們已經登錄並進行了驗證,但訪問令牌無效或已用完。 再次真相。

http://developers.facebook.com/docs/authentication/應該幫助,我已經使用驗證用戶是檢查

相關問題