从Facebook读取分数

时间:2015-07-07 15:59:37

标签: android facebook

在我的Android应用程序中,我通过以下代码将分数发布到一个活动中的fb:

private void submitscore(int p) {
int high_score = sharedPref.getInt("high_score", 0);

if(p > high_score) {
    Bundle fbParams = new Bundle();
    fbParams.putString("score", "" + p);
    new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/scores", fbParams, HttpMethod.POST, new GraphRequest.Callback() {

        public void onCompleted(GraphResponse response) {
            //Do something
        }

    }).executeAsync();
}
}

我知道这部分工作正常,因为onCompleted函数中的代码块完美执行。在此之后,我尝试通过以下代码获得fb的高分

new GraphRequest(AccessToken.getCurrentAccessToken(), "/" + AppID + "/scores", null, HttpMethod.GET, new GraphRequest.Callback() {

    public void onCompleted(GraphResponse response) {

        JSONArray dataArray = response.getJSONArray();

        for (int i=0; i< dataArray.length(); i++) {
            //do something
        }
    }

}).executeAsync();

然而,应用程序在此活动中崩溃,我在for(int i = 0; i&lt; dataArray.length(); i ++){得到空指针异常。但如果我正确发布得分,那么为什么JSONArray是空的?

1 个答案:

答案 0 :(得分:1)

所以我发现我的代码出了什么问题。我最初的做法是为旧的FB sdk工作,其中响应不同。但是,以下代码现在可以使用:

new GraphRequest(AccessToken.getCurrentAccessToken(), "/" + AppID + "/scores", null, HttpMethod.GET, new GraphRequest.Callback() {

public void onCompleted(GraphResponse response) {

    JSONObject jsonObj = response.getJSONObject();
    JSONArray dataArray = jsonObj.getJSONArray("data");

    for (int i=0; i< dataArray.length(); i++) {
        //do something
    }
}

}).executeAsync();