2012-09-07 74 views
1

我使用Facebook提供的標準API。 的響應看起來像一個不成功的交易如何正確處理Facebook回覆?

{ 
    "error": { 
    "message": "Error validating access token: Session has expired at unix 
       time SOME_TIME. The current unix time is SOME_TIME.", 
    "type": "OAuthException", 
    "code": 190 
    "error_subcode": 463 
} 

和成功的一個ssomething像

{"id":"100054544144330556_25940175479504"} 

如何檢測交易成功以下?我必須解析並查看它是否包含單詞「錯誤」或有更好的方法嗎?

+0

你應該接受一個答案。 –

回答

0

如果在結果中發現「錯誤」,Facebook SDK將引發錯誤。如果您使用的是標準API,那麼您也必須這樣做。

例如,在Facebook的PHP SDK就可以看到這一點(在一個輕鬆可讀的方式,這是不是100%的PHP):

if (isset('error')) { 
    throwAPIException(); 
} 

就這樣做。但是,不要忘記先解析JSON對象,不要搜索字符串,如果有'錯誤'鍵,則搜索爲鍵 - >值對。

0

有很多庫可以幫助您調用FaceBook API的REST調用。你看過RestFB嗎?我認爲這對你正在開發的Android應用程序是有價值的。

有了這個框架,您可以從各個響應元素中抽象出自己,並處理真正重要的事情......對象本身(用戶,評論等)。

利用這個框架,你可以這樣做以下:

FacebookEngine faceBookEngine = new DefaultFacebookClient(authToken); 
User facebookUser = facebookClient.fetchObject("me", User.class); 

if (facebookUser == null) 
    { 
     throw new FacebookOAuthException("Bad user data", 
         "user is null!"); 
    } 
0

在Android中,最直接,最簡單的方法是檢查「標識」:

... 
JSONObject jason = new JSONObject(jsonString); 
... 

try{ 
    String id = jason.getString("id"); 
} catch(JSONException je) { 
    //ID was not found 
    .... 
}