iOS上的GTM OAuth 2.0 - 检索用户的电子邮件

时间:2015-02-08 23:59:08

标签: ios oauth oauth-2.0 gtm-oauth2 google-oauth2

GTMOAuth 2.0似乎是iOS上OAuth 2.0验证的绝佳工具。我试图通过在Xcode中实现GTMOAuth-2来检索Google用户的全名和电子邮件,但我遇到了一些麻烦。基于这个答案:Retrieve User email using GTM OAuth2 for 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。我是否需要使用GTMOAuth 2.0的Fetcher对象向Google电子邮件端点发出请求,或者使用auth.accessToken发送其他HTTP GET请求以检索用户的电子邮件?

1 个答案:

答案 0 :(得分:0)

  

我最近在Google OAuth2上工作,用于使用gmail来登录用户   通过遵循tutsplus的教程,它给了我想要的结果.I   会建议你按照这个链接。这提供了方法   loginlogout以及登录用户的电子邮件地址。 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。希望这有帮助   你。