Google OAuth错误-1001

在我的应用程序中,我尝试实施谷歌帐户访问,并在我初始化其工作直到登录会话。 之后它会在屏幕截图中抛出以下错误

在此处输入图像描述在此处输入图像描述

这里我的代码初始化和方法实现

static NSString *const kKeychainItemName =nil; NSString *kMyClientID = @"465568347336.apps.googleusercontent.com"; NSString *kMyClientSecret = @"rKVsWXTlo3M8zqNfofkX0Xrl"; NSString *scope = @"https://www.googleapis.com/auth/userinfo.profile"; GTMOAuth2ViewControllerTouch *viewController; viewController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:scope clientID:kMyClientID clientSecret:kMyClientSecret keychainItemName:kKeychainItemName delegate:self finishedSelector:@selector(viewController:finishedWithAuth:error:)]; [self.navigationController presentModalViewController:viewController animated:YES]; 

error handling程序

  - (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error { if (error != nil) { NSString *output=nil; output = [error description]; NSLog(@"output:%@",output); UIAlertView *fail = [[UIAlertView alloc] initWithTitle:@"Alert" message:[NSString stringWithFormat:@"Error, Authentication failed!\n %@",error] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Try again", nil]; fail.tag = 1; [fail show]; NSLog(@"Authentication failed!"); } else { UIAlertView *success = [[UIAlertView alloc] initWithTitle:@"Alert" message:[NSString stringWithFormat:@"Authentication succeeded!"] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; success.tag = 2; [success show]; NSLog(@"Autzentication succeeded!"); } 

如何解决这个问题。请帮我解决

我使用以下代码实现了我的GTMOAuth2,它对我有用,我希望它可以以某种方式帮助你。

 - (GTMOAuth2Authentication * )authForGoogle { NSURL * tokenURL = [NSURL URLWithString:GoogleTokenURL]; NSString * redirectURI = @"urn:ietf:wg:oauth:2.0:oob"; _auth = [GTMOAuth2Authentication authenticationWithServiceProvider:@"Google" tokenURL:tokenURL redirectURI:redirectURI clientID:GoogleClientID clientSecret:GoogleClientSecret]; _auth.scope = @"https://www.googleapis.com/auth/userinfo.profile"; return _auth; } - (void)signInToGoogle { _auth = [self authForGoogle]; // Display the authentication view GTMOAuth2ViewControllerTouch * viewController = [[GTMOAuth2ViewControllerTouch alloc] initWithAuthentication:_auth authorizationURL:[NSURL URLWithString:GoogleAuthURL] keychainItemName:@"GoogleKeychainName" delegate:self finishedSelector:@selector(viewController:finishedWithAuth:error:)]; [_window setRootViewController: viewController]; [_window makeKeyAndVisible]; } - (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error { if (error != nil) { NSString *output=nil; output = [error description]; NSLog(@"output:%@",output); UIAlertView *fail = [[UIAlertView alloc] initWithTitle:@"Alert" message:[NSString stringWithFormat:@"Error, Authentication failed!\n %@",error] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Try again", nil]; fail.tag = 1; [fail show]; NSLog(@"Authentication failed!"); } else { UIAlertView *success = [[UIAlertView alloc] initWithTitle:@"Alert" message:[NSString stringWithFormat:@"Authentication succeeded!"] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; success.tag = 2; [success show]; NSLog(@"Autzentication succeeded!"); } } 

我复制了你的finishedWithAuth方法,因为它类似于我的实现。 我认为我们的代码与xcode中GTMOAuth2的实现没有太大区别,但我在使用GTMOAuth2时意识到的一件事是调试你遇到的任何错误都非常困难。 我也有类似的错误,并意识到这是因为我在设置应用程序并获取clientID和clientSecret时在Google门户中选择了错误类型的应用程序。 我首先将它设置为iOS应用程序(当然!),但是在线阅读了不同的答案和问题后,我意识到我应该将其创建为其他应用程序类型。 这解决了我的问题。 也许你可以看一下。

他们有一个论坛,支持非常全面,这是这里的链接

为了进一步补充,我可以向您推荐我在将GTMOAuth2集成到我的应用程序时引用的教程。 这是这里的链接。

此外,由于我正在开发一个企业应用程序,要求我检查用户的电子邮件地址,即使在用户通过身份validation后,我也很难收到电子邮件。 在得到我需要的东西之前,我必须破解并阅读代码,如果将来需要它,你可以在SO上查看我的答案。

希望这可以帮助! 🙂

Error Domain=com.google.GTMOAuth2 Code=-1001通常在用户登录时发生,但在OAuth协议窗口中(例如,“想要访问您的电子邮件”)用户点击“取消”或“否”谢谢”。

所以基本上没有办法“解决”这个问题。 您可以在没有该服务的情况下处理它或仅在您的应用程序中进