2015-02-08 2 views
1

GTMOAuth 2.0 - отличный инструмент для проверки OAuth 2.0 на iOS. Я пытаюсь получить полное имя и адрес электронной почты пользователя Google, внедряя GTMOAuth-2 в Xcode, но у меня проблемы. На основании этого ответа: Retrieve User email using GTM OAuth2 for iOS, это должно быть так же просто, как позвонить auth.userEmail. Однако, проблема в том, что вызов auth.userEmail в следующем фрагменте кода всегда возвращает null:GTM OAuth 2.0 на iOS - получение электронной почты пользователя

- (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?

ответ

0

Недавно я работал над Google OAuth2 для пользователя каротажа с gmail следуя учебник tutsplus и Он дал мне нужный results.I рекомендуем вам следовать этой ссылке. Это предоставляет методы для 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 .HOpe это помогает вы.

Смежные вопросы