iOS Facebook SDK 3.1检索返回null的朋友生日

我正在尝试检索facebook朋友的生日数据,但它返回null。 我正在使用此代码:

FBRequest* friendsRequest = [FBRequest requestForMyFriends]; [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection, NSDictionary* result, NSError *error) { NSArray* friends = [result objectForKey:@"data"]; NSLog(@"Found: %i friends", friends.count); for (NSDictionary* friend in friends) { NSLog(@"I have a friend named %@ - birthday %@", friend.name, friend.birthday); } }]; 

朋友的名字还可以,但朋友生日或所有非基本朋友数据的数据都返回null。 注意我已经在facebook.com应用页面和openSession方法(登录)中添加了user_birthday和friends_birthday权限:

 - (void)openSession { NSArray *permissions = [[NSArray alloc] initWithObjects: @"user_birthday", @"friends_birthday", nil]; [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler: ^(FBSession *session, FBSessionState state, NSError *error) { [self sessionStateChanged:session state:state error:error]; }]; } 

需要一些帮助,我已经尝试了一切。

我有同样的问题,我解决这个问题。

  • 首先,请确保您拥有正确的权限。

      NSArray *permissions = @[@"user_birthday", @"friends_hometown", @"friends_birthday", @"friends_location"]; [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler: ..... 
  • 然后,不要使用requestForMyFriends。 我尝试了几种方式(改变FBRequest和这种事情

  • 检查权限并确保它是您需要的权限。

     NSLog(@"permissions::%@",FBSession.activeSession.permissions); 
  • 现在以这种方式生成FBRequest。

     FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,location"]; [ friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { NSArray *data = [result objectForKey:@"data"]; for (FBGraphObject *friend in data) { NSLog(@"%@:%@", [friend name],[friend birthday]); }}]; 

我终于得到了这些数据。 我希望它对你有所帮助

在Graph API的v2.0中,您无法获得某人的朋友生日 – 不推荐使用friends_birthday权限。

在此处阅读有关这些更改的更多信息: https : //developers.facebook.com/docs/apps/changelog