我正在尝试使用 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"
)>
我无法弄清楚我可能会错过什么。