1

我有一个按钮,我想在点击它时连接到 facebook,我想要我 facebook 中的所有朋友。

我可以访问 facebook 并获得 Facebook 令牌并将其保存在数据库中。

我在 CONTROLLER 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;
}
4

2 回答 2

0

尝试这个:

- (void)userFriendList {

    NSString *query =@"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.friendList是一个NSMutableArray

这就是我在数组中获取好友列表然后放入的方式UITableView

于 2013-07-16T08:55:35.560 回答
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);
   }
  }

希望对你有帮助。。

于 2013-07-16T08:13:37.670 回答