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 Надеюсь, это поможет вам.

Другие вопросы по тегам