Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用Facebook sdk获取好友列表和电子邮件_Ios_Objective C_Facebook_Facebook Graph Api - Fatal编程技术网

Ios 如何使用Facebook sdk获取好友列表和电子邮件

Ios 如何使用Facebook sdk获取好友列表和电子邮件,ios,objective-c,facebook,facebook-graph-api,Ios,Objective C,Facebook,Facebook Graph Api,我在视图控制器中实现Facebook SDK时遇到问题,希望使用Facebook获取好友列表和电子邮件。我写道: FBLoginView *loginView = [[FBLoginView alloc] initWithReadPermissions:@[@"public_profile", @"email", @"user_friends"]]; loginView.delegate = self; 然后使用FBLoginViewDelegate的协议方法: - (void)loginV

我在视图控制器中实现Facebook SDK时遇到问题,希望使用Facebook获取好友列表和电子邮件。我写道:

FBLoginView *loginView = [[FBLoginView alloc] initWithReadPermissions:@[@"public_profile", @"email", @"user_friends"]];

loginView.delegate = self;
然后使用FBLoginViewDelegate的协议方法:

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
                            user:(id<FBGraphUser>)user 
{
  self.profilePictureView.profileID = user.id;
  self.nameLabel.text = user.name;
  NSLog(@"%@", user);
  NSLog(@"%@", [user objectForKey:@"email"]);
}

希望这对你有帮助

您可以在
viewDidLoad

[FBRequestConnection startWithGraphPath:@"me/taggable_friends"
                                 parameters:nil
                                 HTTPMethod:@"GET"
                          completionHandler:^(
                                              FBRequestConnection *connection,
                                              id result,
                                              NSError *error
                                              ) {

                          }];
还有一些

编辑

上面的答案只提到了friendlist而不是电子邮件(因为上面的答案已经很清楚了),现在你想要什么friendlist

朋友列表(friend list V 2.2)-指由某人创建或自动为某人生成的一组朋友的对象(如“亲密朋友”或“熟人”列表)


从v2.0开始,您只能通过/me/taggable_-friends
(通过
结果
)获取所有好友

对于使用
Facebook SDK 3.0
的好友,您可以这样做

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);
    }
}];
FBRequest*friendsRequest=[FBRequestFormyFriends];
[FriendsRequestStartWithCompletionHandler:^(FBRequestConnection*连接,
NSDictionary*结果,
N错误*错误){
NSArray*friends=[result objectForKey:@“data”];
NSLog(@“找到:%i个朋友”,朋友数);
用于(NSDictionary*朋友中的朋友){
NSLog(@“我有一个名为%@且id为%@”、friend.name、friend.id的朋友);
}
}];
除您的电子邮件外,您无法访问任何用户的电子邮件。
因为FBGraphUser没有email@属性,我们无法访问名称(点语法)之类的信息,但是NSDictionary仍然有email kv对,我们可以像访问普通NSDictionary一样访问它。 使用此方法,您可以访问电子邮件

if (FBSession.activeSession.isOpen) {
    [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
         if (!error) {
             self.nameLabel.text = user.name;
             self.emailLabel.text = [user objectForKey:@"email"];
         }
     }];
}
if(FBSession.activeSession.isOpen){
[[FBRequest requestForMe]startWithCompletionHandler:^(FBRequestConnection*连接,NSDictionary*用户,NSError*错误){
如果(!错误){
self.namelab.text=user.name;
self.emailLabel.text=[user objectForKey:@“email”];
}
}];
}
对不起,您不能

阅读
Facebook

当用户登录时,您只能获取
电子邮件
,但无法获取用户的
好友电子邮件

我不是很确定,但也许你可以使用“friendsusername”@facebook.com(“facebook电子邮件”)

我发现了这个


此人必须激活@facebook选项。

这将只返回同样使用您正在使用的应用程序的朋友。另外,你无法获得他们的电子邮件地址……此外,这仅用于标记朋友,你不允许将其用于任何其他用途。请问我如何在4.7版本中使用它?它的等价性是什么?这是不可能的,而且从来都不是@英格丽的回答是正确的。@Tobi我从这里读到的,没有人说你可以收到朋友的电子邮件@托比,我不需要朋友的电子邮件。我只需要得到我的电子邮件和我的朋友名单。但是z不能得到这个信息。我不明白为什么…这是一个误会。你知道你只能得到使用相同应用程序的朋友吗?如果没有,你什么也看不到。那不行。Friends权限已被v2.0 Graph API取消,即使是v1.0版的Friends,也无法获取好友的电子邮件地址。no,但他需要获取用户emailNo,您无法获取“Facebook电子邮件”
if (FBSession.activeSession.isOpen) {
    [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
         if (!error) {
             self.nameLabel.text = user.name;
             self.emailLabel.text = [user objectForKey:@"email"];
         }
     }];
}