ios - 从 iOS 中的 Facebook SDK 检索 friend 的电子邮件地址

标签 ios

我试图从 Facebook 好友中检索电子邮件地址。但是,它无法检索到电子邮件地址。

我打印了电子邮件地址。但是,它显示为空。

我在权限数组 FBRequest 中添加了电子邮件地址。

-(void)LoginButtonTapped
{

    [FBSession.activeSession openWithCompletionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error)
     {


         if (FBSession.activeSession.isOpen)
         {

             NSLog(@"TOKEN : %@",[[FBSession activeSession]accessTokenData]);

             FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,email,location"];
             [friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
              {
                  NSArray *data = [result objectForKey:@"data"];
                  for (FBGraphObject<FBGraphUser> *friend in data)
                  {
                      [delegate.friendsListArray addObject:friend];
                      NSLog(@"%@:%@:%@:", [friend name],[friend birthday],[friend id]);
                      NSString *email=[friend objectForKey:@"email"];
                      NSLog(@"Email:%@",email);

                  }


              }];

         }

     }];



}


- (void) performPublishAction:(void (^)(void)) action

{

    NSArray *permissions = [[NSArray alloc] initWithObjects:@"user_birthday",@"user_location",@"friends_email",@"friends_hometown",@"friends_birthday",@"friends_location",@"publish_actions",@"user_photos",nil];

    [[delegate facebook]authorize:permissions];

    if ([FBSession.activeSession.permissions indexOfObject:permissions] == NSNotFound)
    {

        [FBSession.activeSession requestNewPublishPermissions:permissions
                                              defaultAudience:FBSessionDefaultAudienceFriends
                                            completionHandler:^(FBSession *session, NSError *error) {
                                                if (!error) {
                                                    action();
                                                }
                                            }];
    }
    else
    {
        action();
    }

    [permissions release];

}

任何想法请帮助我。

最佳答案

在黑暗中拍摄,但你检查过你的错误值了吗?另外,您返回的记录数是多少?

也可以试试这个,这似乎有效(您可能需要使用 objectForKey 从对象中获取电子邮件):

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<FBGraphUser>* friend in friends) {
        NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
    }
}];

关于ios - 从 iOS 中的 Facebook SDK 检索 friend 的电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564938/

相关文章:

ios - 如何在 CollectionView 中使用延迟加载?

ios - 在 reloadItemsAtIndexPaths 之后避免 UICollectionView 的动画

ios - UIImageWriteToSavedPhotosAlbum 不工作

ios - 本地化设置包

ios - 在 UIView 中隐藏非子 UIView

ios - 阻止快速错误

ios - 如何将数据从导航栏上的右键传输到另一个 ViewController?

iphone - 遍历 NSFetchRequest 结果时无错误地崩溃

objective-c - AVMutableComposition 旋转视频

ios - SpriteKit - 旋转和跳跃同时结束