Facebook SDK Error Domain = com.facebook.sdk在ios中获取好友列表时Code = 5

时间:2014-05-12 09:21:46

标签: ios facebook

我是ios app开发的新手。我想在ios中学习facebook集成并获取朋友列表。

我按照git hub代码https://github.com/facebook/facebook-ios-sdk/tree/master/samples/FriendPickerSample

并按照所有步骤进行操作。我的代码是:

- (IBAction)friendPicker:(id)sender {


    if (!FBSession.activeSession.isOpen)
    {
        // permission : [NSArray arrayWithObjects:@"email", @"read_friendlists", @"user_photos", @"user_events", nil]
        [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
            if(error)
            {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
                [alert show];

            }
            else if (session.isOpen)
            {
               // [FBSession setActiveSession:session];
                [self friendPicker:sender];
            }
        }];
        return;
    }

if(FBSession.activeSession.isOpen)
    {
        FBRequest* friendsRequest = [FBRequest requestForMyFriends];
        [friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
                                                      NSDictionary* result,
                                                      NSError *error) {
            if(error)
            {
                NSLog(@"error : %@",error);
            }
            else
            {

                NSArray* friends = [result objectForKey:@"data"];
                NSLog(@"total array : %@",result);
                NSLog(@"Found: %i friends", friends.count);
                for (NSDictionary<FBGraphUser>* friend in friends) {
                    NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
                }
            }
        }];


    }
  if(self.friendPickerController == nil)
    {
        self.friendPickerController = [[FBFriendPickerViewController alloc] init];

        self.friendPickerController.title = @"Pick Friends";

        self.friendPickerController.delegate = self;
    }

    [self.friendPickerController loadData];
    [self.friendPickerController clearSelection];

    [self presentViewController:self.friendPickerController animated:YES completion:nil];

}

-(void)fillTextAndDismiss:(NSString * )text
{
    [self.selectedFrdView setText:text];

    [self dismissViewControllerAnimated:YES completion:nil];
}

-(void)facebookViewControllerDoneWasPressed:(id)sender
{
    NSMutableString *text = [[NSMutableString alloc] init];

    for(id<FBGraphUser> user in self.friendPickerController.selection)
    {
        if([text length])
        {
            [text appendString:@", "];
        }

        [text appendString:user.name];
    }

    [self fillTextAndDismiss:text.length >0 ? text : @"<none>"];

}

-(void)facebookViewControllerCancelWasPressed:(id)sender
{
    [self fillTextAndDismiss:@"<cancelled>"];
}

我还创建了facebookAppId,并且plist文件也由此键更新。 然后我也收到了这个错误:

2014-05-12 14:21:27.043 fbFrndTest[2753:90b] error : Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0xb166450 {com.facebook.sdk:HTTPStatusCode=400, com.facebook.sdk:ParsedJSONResponseKey={
    body =     {
        error =         {
            code = 100;
            message = "(#100) Unknown fields: username.";
            type = OAuthException;
        };
    };
    code = 400;
}, com.facebook.sdk:ErrorSessionKey=<FBSession: 0xb521fd0, state: FBSessionStateOpen, loginHandler: 0x0, appID: 1481684055397512, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0xb523240>, expirationDate: 2014-07-11 05:48:12 +0000, refreshDate: 2014-05-12 07:26:43 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(
)>}

GitHUB代码成功运行,但我的代码出错了。

2 个答案:

答案 0 :(得分:0)

我相信你应该取消注释

//[FBSession setActiveSession:session];

另请仔细检查您是否已在设置

下的模拟器上登录Facebook

答案 1 :(得分:0)

使用FBRequest

获取Facebook好友

Xcode 8.2.1和目标

             FBRequest *friendRequest = [FBRequest requestForGraphPath:@"me/friends?fields=name,picture,birthday,email,location"];
             [friendRequest startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error)
              {
                  if(error == nil) {

                  NSArray *data = [result objectForKey:@"data"];
                  for (FBGraphObject<FBGraphUser> *friend in data)
                  {
                     // [delegate.friendsListArray addObject:friend];
                      NSLog(@"%@:%@:%@:", [friend name],[friend birthday],[friend id]);
                      NSString *email=[friend objectForKey:@"email"];
                      NSLog(@"Email:%@",email);

                  }
                      UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Facebook" message:@"Success in fetching Facebook Friends." delegate:self cancelButtonTitle:@"OK"otherButtonTitles:nil, nil];
                      [alert show];

                  }
                  else
                  {
                      UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Facebook" message:@"Problem in fetching Facebook Friends. Try Later!" delegate:self cancelButtonTitle:@"OK"otherButtonTitles:nil, nil];
                      [alert show];
                  }


              }];