2013-07-13 3 views
1

Я новичок в разработке iOS. Я получил сообщение об ошибке при получении друга из facebook с помощью SDK для Facebook. Вот мой код.Facebook sdk fetch friend error

FacebookClass

- (void)fetchFacebookFriend{ 
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
    NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"user_birthday",@"friends_hometown", 
          @"friends_birthday",@"friends_location",@"friends_work_history", 
          nil]; 

    if (!FBSession.activeSession.isOpen) { 
     // if the session is closed, then we open it here, and establish a handler for state changes 
     [FBSession openActiveSessionWithReadPermissions:permissions 
              allowLoginUI:YES 
             completionHandler:^(FBSession *session, 
                  FBSessionState state, 
                  NSError *error) { 

              if (error != nil) { 
               NSLog(@"Failed to retrive facebook friend."); 
               return; 
              } 
              else{ 

               self.myArray = [[NSMutableArray alloc] init]; 
               NSLog(@"permissions::%@",FBSession.activeSession.permissions); 

               FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,hometown,location,work"]; 
               [friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
                appDelegate.myFacebookArray = [[NSMutableArray alloc] init]; 
                for (NSDictionary *fbData in [result objectForKey:@"data"]) { 
                 NSLog(@"%@",fbData); 
                 [self.myArray addObject:fbData]; 

                } 

               }]; 


              } 
             }]; 
     return; 
    } 
} 

ViewController

- (IBAction)pickFriendPressed:(id)sender { 
    NSLog(@"##Begin"); 
    [[FacebookClass sharedInstance] fetchFacebookFriend]; 
    NSLog(@"##End"); 
} 

Выход

##Begin 
##End 
Json data 

Пожалуйста, помогите мне получить данные JSon после отображения на ## End.Thanks

ответ

0

Здесь вы ч пр пример кода, который извлекает информацию друзьям:

[facebook requestWithGraphPath:@"me/friends" 
         andParams:[ NSDictionary dictionaryWithObjectsAndKeys:@"picture,id,name,link,gender,last_name,first_name",@"fields",nil] 
         andDelegate:self]; 

Помните:

реализовать соответствующие методы делегата Вы должны вызвать авторизацию перед получением информации друзей. Таким образом, пользователь сможет сначала войти в систему. Я надеюсь, что это помогает, веселит

+0

Hi Anjaneyulu, спасибо вашей reply.I не могу понять, и вы можете показать мне пример. Извините, новый для iOS. Спасибо. –

+0

u может получить словарный ответ ???? – Anjaneyulu

+0

http://stackoverflow.com/questions/12437046/get-facebook-user-profile-data-after-getting-access-token-in-ios-5 pls проверить его – Anjaneyulu

0

Попробуйте это:

получить список друзей, используя

[FBRequest requestForMyFriends];

FBRequest * friendsRequest = [Запрос FBRequestForMyFriends];

[friendsRequest startWithCompletionHandler:^(FBRequestConnection connection, NSDictionary result, ошибка NSError) {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]; 
    } 
} 

видеть мой принял этот ответ на How to get the list of friend without opening FBFriendPickerViewController iOS

Смежные вопросы