如何正确处理Facebook回复?

时间:2012-09-07 19:47:22

标签: android facebook

我正在使用Facebook提供的标准API。 对于不成功的事务,响应看起来类似于以下内容

{
  "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
}

和一个成功的像

一样的东西
{"id":"100054544144330556_25940175479504"}

如何检测成功的交易?我是否必须解析并查看它是否包含“错误”这个词还是有更好的方法?

3 个答案:

答案 0 :(得分:0)

如果在结果中发现'错误',Facebook SDK将抛出错误。如果您使用的是标准API,那么您必须这样做。

例如,在Facebook PHP SDK中你可以看到这个(以一种易读的方式,这不是100%PHP):

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

做同样的事。但是不要忘记之前解析JSON对象,不要搜索为字符串,如果有“错误”键,则搜索为key->值对。

答案 1 :(得分:0)

有很多库可以帮助您调用FaceBook API。你看过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!");
    }

答案 2 :(得分:0)

在Android中,最直接,最简单的方法是检查“id”:

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

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