我正在尝试使用Facebook的Graph API从iPhone应用程序中检索自己的签到列表。我已经请求了一个令牌,并且能够访问我的个人资料信息和我的朋友列表,但是当我请求签到时,我总是得到一个空的记录集。我猜这与我请求的权限有关,但我可以在Facebook Graph API Explorer(https://developers.facebook.com/tools/explorer?method=GET&path=me%2Fcheckins)上使用相同的权限进行查询,我确实获得了数据。
令牌请求:
NSArray *perm = [NSArray arrayWithObjects:
@"user_status", @"user_events", @"user_location",
@"friends_checkins", @"friends_status", nil];
[FBSession openActiveSessionWithReadPermissions:perm
allowLoginUI:YES
completionHandler:
^(FBSession *session,
FBSessionState state, NSError *error) {
//handle the session opening
}];
然后当我尝试检索签到时(在单独的视图控制器中):
[[FBRequest requestForGraphPath:@"/me/checkins"] startWithCompletionHandler:
^(FBRequestConnection *connection,
NSDictionary<FBGraphObject> *checkins,
NSError *error) {
if (!error) {
NSLog(FBSession.activeSession.description);
NSArray *data = [checkins objectForKey:@"data"];
for (FBGraphObject *c in data) {
//execution never gets here because data is empty
}
}
}];
执行永远不会到达for
循环,因为data
变量为空。
我在for
循环之前打印出当前会话状态,以确保一切正确。结果是:
<FBSession: 0x15555555, state: FBSessionStateOpen, loginHandler: 0x5555555, appID:
55555555555, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy:
0x15555555>, expirationDate: 4001-01-01 00:00:00 +0000, refreshDate: 2013-05-15 06:55:56
+0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
"user_status",
"user_events",
"user_location",
"friends_checkins",
"friends_status"
)>
我无法弄清楚我可能缺少什么。