2013-07-16 88 views
1

我有一個按鈕,我想連接到Facebook,因爲我點擊它,我想要我所有的朋友在我的臉書。如何在iOS中的FACEBOOK SDK中從Facebook獲取朋友列表?

我可以訪問Facebook,並獲得Facebook令牌並將其保存在數據庫中。

我使用控制器A中的以下代碼連接到Facebook,但在CONTROLLER B中,我想要獲取好友列表。

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView 
         user:(id<FBGraphUser>)user { 


NSString *fbAccessToken = [FBSession activeSession].accessTokenData.accessToken; 

NSLog(@"Token is %@", fbAccessToken); 

DataManager *dataManager = [[DataManager alloc] init]; 

/*flag is for identification, that from which account user has logged in, either facebook or 

from account which he made using this app. 

flag = facebook //if user is signed in using his facebook account 
flag = myuser //if user is signed in using his own app account 

*/ 
[dataManager saveloginData:fbAccessToken username:@"NO DATA" password:@"NO DATA" flag:@"facebook"]; 

// NSLog(@"Veer Suthar %@",user); 

status = YES; 

[self loginWithFacebookDirectly]; 

// here we use helper properties of FBGraphUser to dot-through to first_name and 
// id properties of the json response from the server; alternatively we could use 
// NSDictionary methods such as objectForKey to get values from the my json object 
self.labelFirstName.text = [NSString stringWithFormat:@" %@", user.first_name]; 

// setting the profileID property of the FBProfilePictureView instance 
// causes the control to fetch and display the profile picture for the user 
self.profilePic.profileID = user.id; 

NSLog(@"USER IS %@", user); 


// self.loggedInUser = user; 
} 
+0

[FBRequest requestForMyFriends]? – SEG

回答

0

嘗試這樣的....

//要提取好友列表

 -(void)addList:(FBSession *)session 
    { 
     NSString* fql = [NSString stringWithFormat: @\"select uid from user where uid == %lld\", session.uid]; 
     NSDictionary* params = [NSDictionary dictionaryWithObject:fql forKey:@\"query\"]; 
     sessionView = session; 
     [[FBRequest requestWithDelegate:self] call:@\"facebook.friends.get\" params:params];  
    } 

    - (void)request:(FBRequest*)request didLoad:(id)result 
     { 
     if(myList==nil) 
     { 
     NSArray* users = result; 
     myList =[[NSArray alloc] initWithArray: users]; 
     for(NSInteger i=0;i<[users count];i++) { 
     NSDictionary* user = [users objectAtIndex:i]; 
     NSString* uid = [user objectForKey:@\"uid\"]; 
     NSString* fql = [NSString stringWithFormat: @\"select name from user where uid == %@\", uid]; 
     NSDictionary* params = [NSDictionary dictionaryWithObject:fql forKey:@\"query\"]; 
     [[FBRequest requestWithDelegate:self] call:@\"facebook.fql.query\" params:params]; 
     } 
     } 
     else 
     { 
     NSArray* users = result; 
     NSDictionary* user = [users objectAtIndex:0]; 
     NSString* name = [user objectForKey:@\"name\"]; 
     txtView.text=[NSString localizedStringWithFormat:@\"%@%@,\n\",txtView.text,name]; 
     } 
     } 

//要列出網上的朋友

- (void)session:(FBSession*)session didLogin:(FBUID)uid { 
     NSString *fql = [NSString localizedStringWithFormat:@\"SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=%lld) AND 'active' IN online_presence\",uid]; 
     myList=nil; 
     NSDictionary *params =[NSDictionary dictionaryWithObject:fql forKey:@\"query\"]; 
     [[FBRequest requestWithDelegate:self] call:@\"facebook.fql.query\" params:params]; 
    } 
    - (void)request:(FBRequest*)request didLoad:(id)result { 
    if(myList==nil) { 
     NSArray* users = result; 
     myList =users; 
     for(int i=0;i<[users count];i++) { 
     NSDictionary* user = [users objectAtIndex:i]; 
     NSString* name = [user objectForKey:@\"uid\"]; 
     NSDictionary* params = [NSDictionary dictionaryWithObjectsAndKeys:name,@\"uids\",@\"name\",@\"fields\",nil]; 
     [[FBRequest requestWithDelegate:self] call:@\"facebook.users.getInfo\" params:params]; 
     } 
    } 
    else { 
     NSArray* users = result; 
     NSDictionary* user = [users objectAtIndex:0]; 
     NSString* name = [user objectForKey:@\"name\"]; 
     NSLog(name); 
    } 
    } 

希望它會幫助你..

+0

我可以收到我的Facebook朋友的電子郵件嗎? – Duaan

0

試試這個:

- (void)userFriendList { 

    NSString *query [email protected]"SELECT name, pic_square FROM user WHERE uid in (SELECT uid2 FROM friend where uid1 = me())"; 

    // Set up the query parameter 
    NSDictionary *queryParam = 
    [NSDictionary dictionaryWithObjectsAndKeys:query, @"q", nil]; 
    // Make the API request that uses FQL 
    [FBRequestConnection startWithGraphPath:@"/fql" 
           parameters:queryParam 
           HTTPMethod:@"GET" 
          completionHandler:^(FBRequestConnection *connection, 
               id result, 
               NSError *error) { 
           if (error) { 
            NSLog(@"Error: %@", [error localizedDescription]); 
           } else { 
            NSLog(@"Result: %@", result); 
            // show result 
            self.friendList = (NSArray *) [result objectForKey:@"data"]; 

            } 
          }]; 
} 

在這裏,在上述self.friendListNSMutableArray

這是我在數組獲取好友列表,然後放置在UITableView

+0

我可以收到我的Facebook好友的電子郵件嗎? – Duaan

+0

因爲您必須從Graph API獲取權限,如此鏈接所示https://developers.facebook.com/docs/reference/api/ –

相關問題