在我的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是空的?
答案 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();