0

我正在尝试使用 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"
)>

我无法弄清楚我可能会错过什么。

4

0 回答 0