2015-02-09 93 views
0

一直使用FBConnect来选择朋友,但FBSession的accessTokenData从来没有启动会话的用户的用户标识(在他们的登录演示中也不存在)。 FBFriendPickerViewController返回朋友用户的ID,但我没有看到关于当前用户的任何信息。是否有可能从FB活动会话,accessTokenData或其他方式获取当前用户的ID?FBSession.session.accessTokenData.userID始终为零

编辑: 是否有可能从此调用返回用户的ID?

[FBSession openActiveSessionWithReadPermissions:@[@"public_profile", @"user_friends"] 

这样做一步到位会好得多。

回答

0

您必须申请“/我”才能获得'user_id',因为access_token属性是加密的,您无法通过这种方式访问​​它。

+0

谢谢,意识到我需要完成链处理。不确定它非常直观。 – user1192805 2015-02-09 15:18:44

0

这里是我落得这样做:

if (!FBSession.activeSession.isOpen) { 
// if the session is closed, then we open it here, and establish a handler for state changes 
[FBSession openActiveSessionWithReadPermissions:@[@"public_profile", @"user_friends"] 
            allowLoginUI:YES 
           completionHandler:^(FBSession *session, 
                FBSessionState state, 
                NSError *error) { 
           if (error) { 
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" 
                         message:error.localizedDescription 
                        delegate:nil 
                      cancelButtonTitle:@"OK" 
                      otherButtonTitles:nil]; 
            [alertView show]; 
           } 
           else if (session.isOpen) { 

            if ([session.declinedPermissions containsObject:@"user_friends"]) { 
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"friends" 
                         message:@"Must allow accessing friends" 
                         delegate:nil 
                       cancelButtonTitle:@"OK" 
                       otherButtonTitles:nil]; 
            [alertView show]; 
            } 
            else { 
            [[FBRequest requestForMe] startWithCompletionHandler: 
            ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { 

             if (error) { 
             UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" 
                          message:error.localizedDescription 
                          delegate:nil 
                        cancelButtonTitle:@"OK" 
                        otherButtonTitles:nil]; 
             [alertView show]; 
             } 
             else { 
             NSLog(@"name %@ id %@", user.first_name, user.objectID); 

             [[FBRequest requestForMyFriends] startWithCompletionHandler: ^(FBRequestConnection *connection, 
                         NSDictionary* result, 
                         NSError *error) { 
              NSArray* friends = [result objectForKey:@"data"]; 
              NSLog(@"Found: %i friends", friends.count); 

              for (NSDictionary<FBGraphUser>* friend in friends) { 
              NSLog(@"I have a friend named %@ with id %@", friend.name, friend.objectID); 
              } 
             }]; 
             } 
            }]; 
            } 
           } 
           }];