2014-12-04 72 views
0

我有一個問題,我在我的視圖控制器中實現Facebook SDK,並希望獲得使用Facebook的朋友和電子郵件列表。我寫了這個:如何獲得使用Facebook SDK的朋友和電子郵件列表

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

這是不可能的,從來沒有。 @ ingrid的答案是正確的。 – Tobi 2014-12-04 13:54:38

+0

@Tobi 我從這裏閱讀[link](http://www.appcoda.com/ios-programming-facebook-login-sdk/) – 2014-12-04 13:57:49

+0

有沒有地方說你可以得到朋友的電子郵件。 HTTPS://developers.facebook。com/docs/apps/changelog#v2_0_permissions – Tobi 2014-12-04 14:01:34

回答

-2

希望這將幫助你

你可以通過在您的viewDidLoad

中使用以下代碼獲取您的朋友列表
[FBRequestConnection startWithGraphPath:@"me/taggable_friends" 
           parameters:nil 
           HTTPMethod:@"GET" 
          completionHandler:^(
               FBRequestConnection *connection, 
               id result, 
               NSError *error 
              ) { 

          }]; 

和一些info

編輯

上面的回答只提及的好友列表中沒有電子郵件(其已經相當通過上述回答清楚),現在你想好友列表

一個什麼朋友列表(朋友列表V 2.2) - 一個對象,指由某人創建或自動爲某人創建的朋友羣(如「親密朋友」或「熟人」列表)

from v2.0 you'll only be able to get all friends via the /me/taggable_friends(見它由result

+0

這將只會返回使用你正在使用的應用程序的朋友。另外,你沒有得到他們的電子郵件地址。 – Fogmeister 2014-12-04 13:53:14

+0

...此外,這只是標記朋友,你不能用於其他任何事情。 – luschn 2014-12-04 14:16:00

+0

請問我該如何在4.7版本中使用它?它的等價性是什麼? – 2017-07-04 16:09:06

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對,我們可以像訪問它一樣訪問它一個正常的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"]; 
     } 
    }]; 
} 
+1

這不會工作。朋友的權限已被v2.0 Graph API解僱,並且獲得朋友的電子郵件地址是**從未**可能,即使是v1.0 – Tobi 2014-12-04 13:56:45

+0

朋友沒有,但他需要獲得用戶電子郵件 – gronzzz 2014-12-04 14:33:29

2

抱歉,但你不能

FacebookPermissions

你只能得到email當用戶登錄,但你不能得到用戶的friends email

我不太確定,但也許你可以使用「friendsusername"@facebook.com(」facebook email「)。

,我發現這個,https://www.facebook.com/help/224049364288051

的人必須主動@facebook選項。

+0

不,您可以沒有「Facebook電子郵件」 – Tobi 2014-12-04 14:02:34

相關問題