Как получить электронную почту пользователя с помощью SDK на SD 3.1 в iOS?
Я открываю сеанс facebook с разрешением электронной почты так:
- (void)facebookOpenSession {
NSArray *permissions = @[@"email"];
[FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:YES
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
[self sessionStateChanged:session state:state error:error];
}];
}
И тогда важный фрагмент состояния сеанса изменился:
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error {
switch (state) {
case FBSessionStateOpen: {
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
if (error) {
//error
} else {
self.myFirstNameLabel.text = user.first_name;
self.myLastNameLabel.text = user.last_name;
// self.myEmailLabel.text = @"";
}
}];
}
...
Как я могу извлечь электронную почту пользователя? Является ли он в одной из предоставленных переменных или мне нужно сделать другой вызов в обработчике завершения?
Спасибо заранее!
Ответы
Ответ 1
FBGraphUser не обладает свойством (я предполагаю, что его необязательный/доступный только если вы запросили разрешение электронной почты), но вы все равно сможете получить к нему доступ из словаря следующим образом:
[user objectForKey:@"email"]
Ответ 2
Вы должны проверить, прежде чем задавать правильные разрешения
loginView.readPermissions = @[@"public_profile", @"email"];