我有一个问题,我在我的视图控制器中实现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"]);
}
在控制台中我得到了这个:
2014-12-04 14:56:48.746 FBLoginUIControlSample[2941:613]
"first_name" = Pavel;
gender = male;
id = 1379600000000000;
"last_name" = name;
link = "https://www.facebook.com/app_scoped_user_id/1379600000000000/";
locale = "ru_RU";
name = "Pavel name";
timezone = 2;
"updated_time" = "2014-12-03T11:47:13+0000";
verified = 1;
2014-12-04 14:56:48.748 FBLoginUIControlSample[2941:613] (null)
答案 0 :(得分:2)
阅读Facebook
Permissions
您只能在用户登录时获得email
,但您无法获得用户friends email
。
我不太确定,但也许你可以使用&#34; friendsusername&#34; @ facebook.com(&#34; facebook email&#34;)。
我发现了这个,https://www.facebook.com/help/224049364288051
此人必须激活@facebook选项。
答案 1 :(得分:0)
对于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);
}
}];
除了您的电子邮件之外,您无法访问任何用户的电子邮件。
因为FBGraphUser没有电子邮件@property,我们无法访问类似名称(点语法)的信息,但是NSDictionary仍然有电子邮件kv-pair,我们可以像访问正常情况一样访问它的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"];
}
}];
}
答案 2 :(得分:-2)
希望这会对你有所帮助
您可以使用viewDidLoad
[FBRequestConnection startWithGraphPath:@"me/taggable_friends"
parameters:nil
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
}];
和一些info
修改强>
上面的答案只提到好友列表而不是电子邮件(因为上面的答案已经很清楚),现在你想要的朋友列表
朋友列表(朋友列表V 2.2) - 一个对象,指的是由某人创建或自动为某人生成的朋友组(例如&#34;关闭朋友&#34;或&#34;熟人&# 34;列表)
from v2.0 you'll only be able to get all friends via the /me/taggable_friends
(见result
)