GTM OAuth 2.0 на iOS - получение электронной почты пользователя
GTMOAuth 2.0 кажется отличным инструментом для проверки OAuth 2.0 на iOS. Я пытаюсь получить полное имя и адрес электронной почты пользователя Google, внедрив GTMOAuth-2 в XCode, но у меня возникли некоторые проблемы. Основываясь на этом ответе: Получить электронную почту пользователя с помощью GTM OAuth2 для iOS, это должно быть так же просто, как звонить auth.userEmail
, Однако проблема заключается в том, что вызов auth.userEmail
в следующем сегменте кода всегда возвращать null
:
- (void)viewController:(GTMOAuth2ViewControllerTouch * )viewController
finishedWithAuth:(GTMOAuth2Authentication * )auth
error:(NSError * )error
{
NSLog(@"finished");
NSLog(@"auth access token: %@", auth.accessToken);
[self.navigationController popToViewController:self animated:NO];
if (error != nil) {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error Authorizing with Google"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
} else {
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Success Authorizing with Google"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
NSLog(@"email: %@",auth.userEmail);
}
Код выполняется успешно и получает токен доступа, но auth.userEmail
всегда null
, Нужно ли делать запрос к конечной точке электронной почты Google, используя GTMOAuth 2.0 Fetcher
объект или иным образом отправить дополнительный HTTP-запрос GET для получения электронной почты пользователя, используя auth.accessToken
?
1 ответ
Я недавно работал над
Google OAuth2
для входа пользователя сgmail
следуя руководству tutsplus, и оно дало мне желаемые результаты. Я бы порекомендовал вам перейти по этой ссылке. Это обеспечивает методы дляlogin
а такжеlogout
а также адрес электронной почты зарегистрированного пользователя. Google OAuth2. И чтобы получить адрес электронной почты вошедшего в систему пользователя, добавьте это в области видимости.https://www.googleapis.com/auth/userinfo.email
, и код будет выглядеть так
[_googleOAuth authorizeUserWithClienID:@"YOUR CLIENT ID"
andClientSecret:@"SECRET"
andParentView:self.view
andScopes:[NSArray arrayWithObjects:@"https://www.googleapis.com/auth/userinfo.profile",@"https://www.googleapis.com/auth/userinfo.email", nil]];
А для GTM OAuth 2.0 добавьте эту область
https://www.googleapis.com/auth/userinfo.email
Надеюсь, это поможет вам.