2013-03-29 27 views

回答

4

試試這個:

使用

**[FBRequest requestForMyFriends];** 

**FBRequest* friendsRequest = [FBRequest requestForMyFriends];** 

[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,NSDictionary* result,NSError *error) { 
NSArray* friends = [result objectForKey:@"data"]; ...... 

編碼是如下,但主線是

**[FBRequest requestForMyFriends];** 

-(void)sessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error { 
switch (state) { 
    case FBSessionStateOpen: { 
     if (self != nil) { 
      [[FBRequest requestForMe] startWithCompletionHandler: ^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) { 
       if (error) { 
        //error 
       }else{ 
        FBRequest* friendsRequest = [FBRequest requestForMyFriends]; 
        [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,NSDictionary* result,NSError *error) { 
         NSArray* friends = [result objectForKey:@"data"]; 

         for (int i = 0; i < [arrFacebookFriends count]; i++) { 
          UserShare *shareObj = [arrFacebookFriends objectAtIndex:i]; 
          [shareObj release]; 
          shareObj = nil; 
         } 
         [arrFacebookFriends removeAllObjects]; 

         for (NSDictionary<FBGraphUser>* friend in friends) { 
          UserShare *shareObj = [[UserShare alloc] init]; 
          shareObj.userName = friend.name; 
          shareObj.userFullName = friend.username; 
          shareObj.userId = [friend.id intValue]; 
          NSLog(@"%@",friend.id); 
          shareObj.userPhotoUrl = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?", friend.id]; 
          [arrFacebookFriends addObject:shareObj]; 
          [shareObj release]; 
         } 
         [self StopSpinner]; 
         [tblFacebookFriends reloadData]; 
        }]; 
       } 
      }]; 
     } 
     FBCacheDescriptor *cacheDescriptor = [FBFriendPickerViewController cacheDescriptor]; 
     [cacheDescriptor prefetchAndCacheForSession:session]; 
    } 
     break; 
    case FBSessionStateClosed: { 
     [self StopSpinner]; 
     UIViewController *topViewController = [self.navigationController topViewController]; 
     UIViewController *modalViewController = [topViewController modalViewController]; 
     if (modalViewController != nil) { 
      [topViewController dismissViewControllerAnimated:YES completion:nil]; 
     } 
     //[self.navigationController popToRootViewControllerAnimated:NO]; 

     [FBSession.activeSession closeAndClearTokenInformation]; 

     [self performSelector:@selector(showLoginView) withObject:nil afterDelay:0.5f]; 
    } 
     break; 
    case FBSessionStateClosedLoginFailed: { 
     [self StopSpinner]; 
     [self performSelector:@selector(showLoginView) withObject:nil afterDelay:0.5f]; 
    } 
     break; 
    default: 
     break; 
} 

[[NSNotificationCenter defaultCenter] postNotificationName:SCSessionStateChangedNotificationFL object:session]; 

if (error) { 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Error: %@", [FacebookFriendsListViewController FBErrorCodeDescription:error.code]] message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
} 
} 
+0

感謝它的工作原理:) – DAMM108

+0

是得到好友列表返回朋友的數量,但朋友數組是空的。 –

相關問題