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请求以检索用户的电子邮件?
答案 0 :(得分:0)
我最近在
Google OAuth2
上工作,用于使用gmail
来登录用户 通过遵循tutsplus的教程,它给了我想要的结果.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
。希望这有帮助 你。