FBSDKGraphRequest响应问题 – 没有得分
我正在使用以下代码来获取我的Facebook朋友的游戏分数。
-(void)GetFriendScore { NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSString stringWithFormat:@"%@", [FBSDKAccessToken currentAccessToken]], @"access_token", nil]; FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"/me/scores" parameters:params HTTPMethod:@"GET"]; [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { }]; }
并在随后的合作中得到了答复
{ data = ( { user = { id = XYZ; name = "XYZ"; }; } );
}
但这不是预期的回应。 我期待的甲方正在跟随
{ data = ( { application = { category = Games; id = XYZ; link = "https://www.facebook.com/games/?app_id=XYZ"; name = "XYZ"; }; score = 2907; user = { id = XYZ; name = "XYZ"; }; } );
}
任何人都可以请帮助我得到正确的答复?
看起来你正在使用Graph API v2.4。 这样,你必须指定你想要返回的每个字段。 看到我的答案在这里类似的问题:
- 使用GET方法的图表API分数不能返回分数字段
您需要申请/{app_id}/scores?fields=user,application,score
而不是/me/scores?fields=user,application,score
我猜如果您还想查看朋友的分数
看到
或者,
/me?fields=scores{user,application,score},friends{scores{user,application,score}}
应该也能工作
通过使用下面的代码解决。
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"/me/scores?fields=user,application,score" parameters:params HTTPMethod:@"GET"];
我们如何可以在android.i中做同样的问题在Android我使用下面的代码
request = new Request(Session.getActiveSession(), "/ "+"FB_ID"+"/scores?fields=user,application,score", param , HttpMethod.GET); if(request!=null) { request.setCallback(new Request.Callback() { public void onCompleted(Response response) { if(response!=null) { GraphObject graphObject = response.getGraphObject(); if(graphObject==null) { //getting graphObject NULL } } } } }
如何解决这个问题
param.putString("fields", "user,application,score"); request = new Request(Session.getActiveSession(), "/me/scores", param , HttpMethod.GET); if(request!=null) { request.setCallback(new Request.Callback() { public void onCompleted(Response response) { if(response!=null) { GraphObject graphObject = response.getGraphObject(); if(graphObject==null) { //Enjoy } } } } }