Facebook импортирует данные ios

Это первый раз, когда я пытаюсь интегрировать Facebook в свое приложение для iOS. Я пытаюсь импортировать имя, фамилию и некоторые другие данные из Facebook. Я могу войти в Facebook, но не могу импортировать данные. Я думаю, что мой код где-то неверен, и я не знаю, где!

    if (appDelegate.session.isOpen) {
    [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection,
                                                           id<FBGraphUser> user,
                                                           NSError *error2) {

        regdet.firstname = user.first_name;
        regdet.lastname = user.last_name;
        regdet.email = [user objectForKey:@"email"];
        regdet.address1 = [user objectForKey:@"locale"];
        regdet.city = [user.location objectForKey:@"name"];
        NSLog(@"firstname %@",regdet.firstname);


    }];


} else {
    if (appDelegate.session.state != FBSessionStateCreated) {
        // Create a new, logged out session.
        appDelegate.session = [[FBSession alloc] init];
    }

    // if the session isn't open, let's open it now and present the login UX to the user
    [appDelegate.session openWithCompletionHandler:^(FBSession *session,
                                                     FBSessionState status,
                                                     NSError *error1) {


        [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection,
                                                               id<FBGraphUser> user,
                                                               NSError *error2) {

                regdet.firstname = user.first_name;
                regdet.lastname = user.last_name;
                regdet.email = [user objectForKey:@"email"];
                regdet.address1 = [user objectForKey:@"locale"];
                regdet.city = [user.location objectForKey:@"name"];
                NSLog(@"firstname %@",regdet.firstname);


        }];
         [self performSegueWithIdentifier: @"Facebooksegue" sender: self];

    }];
}

person Spidy    schedule 01.11.2013    source источник


Ответы (2)


Попробуй это

FBLoginView *loginView=[[FBLoginView alloc]init];
loginView.delegate=self;
loginView.readPermissions = @[@"first_name",
                              @"last_name",
                              @"location",
                              @"id",
                              @"access_token",
                              @"email"];
NSArray* permissions =  [NSArray arrayWithObjects: @"email", nil];
loginView.readPermissions = @[@"email"];
loginView.readPermissions=permissions;

{

    [FBSession openActiveSessionWithReadPermissions:Nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {





[FBRequestConnection
 startForMeWithCompletionHandler:^(FBRequestConnection *connection,
                                   id<FBGraphUser> user1,
                                   NSError *error)
    {
        if (!error)
        {

            firstname=user1.first_name;
            lastname=user1.last_name;
            city=[user1.location objectForKey:@"name"];
            email=user1[@"email"];
            fbid=user1.id;

            [[NSUserDefaults standardUserDefaults]setObject:Loggedin forKey:@"token"];
            [[NSUserDefaults standardUserDefaults]synchronize];
        }
        NSURL *url = [[NSURL alloc]initWithString:[NSString stringWithFormat:@"%@action=currfbuser&email=%@&fb_id=%@",MainURL,email,fbid ]];
        NSError *errors;
        NSData *data = [NSData dataWithContentsOfURL:url];
        NSDictionary *json = (NSDictionary *)[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&errors];
        NSString  *status = json[@"status"];
        user = json[@"user"];
        if ([status isEqualToString:@"success"])
        {
            [self performSegueWithIdentifier: @"LogIN" sender: self];
        }
        else if (!([fbid isEqualToString:@""]))
        {
            [self performSegueWithIdentifier: @"Facebooksegue" sender: self];
        }
        NSLog(@"%@",firstname);
        NSLog(@"%@",lastname);
        NSLog(@"%@",city);
        NSLog(@"%@",email);
        NSLog(@"%@",fbid);

    }];}];
}
person Community    schedule 02.12.2013

Вот документация Facebook и пример. Вам нужно запросить дополнительное разрешение.

[FBSession openActiveSessionWithReadPermissions:@[@"basic_info", @"email"]
                                   allowLoginUI:YES
                              completionHandler:^(FBSession *session,
                                                  FBSessionState status,
                                                  NSError *error) {  
                                  // Respond to session state changes,   
                                  // ex: updating the view
                              }];

Вот ключи разрешений Facebook и их описание

person Kostiantyn Koval    schedule 01.11.2013
comment
Верен ли указанный выше способ получения данных с сервера Facebook, как указано в вопросе\? - person Spidy; 01.11.2013
comment
Получение правильно, но сначала вам нужно получить разрешение. вам нужен открытый сеанс с правильным разрешением. Когда вы создаете сеанс, вы должны добавить разрешения. FBSession *session = [[FBSession activeSession] initWithPermissions:@[@basic_info, @email]]; - person Kostiantyn Koval; 01.11.2013