2015-04-07 2 views
3

Я работаю над приложением Facebook IOS для получения пользовательских данных (Public Profile, Email) из Facebook. После внедрения процесса входа я могу получить имя, последнее имя и url для изображения профиля пользователя, но письмо, которое я получаю, равно null. я передал разрешение на получение общественного профиля и Emial.but, я не получаю Email от человека.Не удалось получить идентификатор электронной почты Зарегистрированного лица в Facebook ios SDK

Я использую facebook SDK для IOS V4.0.1

Вот мой код

 [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" 
            parameters:@{@"fields": @"first_name, last_name, picture, email"}] 
           startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
if (!error) {      
NSString *firstName = [NSString stringWithFormat:@"%@",[result objectForKey:@"first_name"]]; 

NSString *lastName = [NSString stringWithFormat:@"%@",[result objectForKey:@"last_name"]]; 
NSString *email = [NSString stringWithFormat:@"%@",[result objectForKey:@"email"]]; 
NSString *picurl = [NSString stringWithFormat:@"%@",[result objectForKey:@"picture"]]; 

NSLog(@"email is %@", [result objectForKey:@"email"]); 

NSLog(@"picture is %@", [result objectForKey:@"picture"]); 
} 
else{ 
NSLog(@"%@", [error localizedDescription]); 
} 
}]; 

Я получаю следующий результат:

email is (null) 
picture is { 
    data =  { 
     "is_silhouette" = 0; 
     url = "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xfp1/v/t1.0-1/p50x50 **************_************_n.jpg?oh=ed5fd60c770cb5f34424b3fcfb4ca174&oe=559F472D&__gda__=1437970763_989a264cf7ec16f5d51b0a58b7e7f609"; 
    }; 
} 

почему я не получаю адрес электронной почты пользователя

+0

если электронный идентификатор доступен (общественный) это, конечно, приходит еще получить у только нуль –

+0

Как я могу проверить, если адрес электронной почты id является общедоступным –

+0

его по умолчанию на Facebook, мы не можем вносить никаких изменений, –

ответ

8

Во время регистрации. Вы должны спросить разрешение пользователя на электронную почту, иначе вы получите электронное письмо как (null).

Не будет получать по электронной почте ID

FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init]; 
loginView.readPermissions = @[@"public_profile"]; 

Если вы входите с выше разрешения, то вы не сможете получить электронный идентификатор всегда будет возвращать (нуль).

бы принести Email ID с Общественным профилем

FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init]; 
loginView.readPermissions = @[@"email"]; 

Наше приложение автоматически получает разрешение на public_profile любого успешного входа в систему, но он не получает электронную почту.

То же самое касается и пользовательского входа.

См: https://developers.facebook.com/docs/facebook-login/ios/v2.3#login-apicalls

+0

Да, приятель, я попросил self.loginButton.readPermissions = @ [@ "public_profile", @ "email", @ user_profiles]; –

+0

это сработало спасибо –

+0

@JuniorBillgates, как это сработало, можете ли вы сказать? что вы изменили? –

0

Если вы должны были взять на себя логику, установив FBSDKLoginButton.readPermissions в ["public_profile","email"] бы путь, чтобы выразить, что вы хотите "public_profile" и их "email" адрес пользователя Facebook, вы будете сильно ошибаетесь. Очень запутанным, на мой взгляд, следующее дает как общедоступный профиль пользователя Facebook и их адрес электронной почты:

FBSDKLoginButton.readPermissions = ["email"] 
Смежные вопросы