1

GTMOAuth 2.0 似乎是 iOS 上 OAuth 2.0 验证的绝佳工具。我正在尝试通过在 Xcode 中实现 GTMOAuth-2 来检索 Google 用户的全名和电子邮件,但遇到了一些麻烦。基于这个答案:Retrieve User email using GTM OAuth2 for iOS,它应该像调用一样简单auth.userEmailauth.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 电子邮件端点发出请求,或者发送额外的 HTTP GET 请求以使用 检索用户的电子邮件auth.accessToken

4

1 回答 1

0

我最近 按照 tutsplus 的教程Google OAuth2为登录用户工作,它给了我想要的结果。我建议你点击这个链接。gmail这提供了登录用户的方法 loginlogout电子邮件地址。谷歌 OAuth2 。要获取登录用户的电子邮件地址,请将其添加到 scopes 中 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。希望这对您有所帮助。

于 2015-02-10T12:01:31.033 回答