Ios 谷歌登录未返回用户信息-文档中有错误

Ios 谷歌登录未返回用户信息-文档中有错误,ios,objective-c,google-oauth,google-signin,Ios,Objective C,Google Oauth,Google Signin,我在这里使用Google登录文档: 在2。对于ViewController实现文件的更改,我在Xcode中获取检索用户信息时出错: GIDSignIn* signIn = [GIDSignIn sharedInstance]; // Xcode error: Property 'fetchEmailToggle' not found on object type 'LoginViewController', did you mean to access instance variabl

我在这里使用Google登录文档:

在2。对于ViewController实现文件的更改,我在Xcode中获取检索用户信息时出错:

GIDSignIn* signIn = [GIDSignIn sharedInstance];
   // Xcode error:  Property 'fetchEmailToggle' not found on object type 'LoginViewController', did you mean to access instance variable 'fetchEmailToggle'?
   if (self.fetchEmailToggle.isEnabled) {
      signIn.shouldFetchBasicProfile = YES;
}
[signIn setClientID: kClientId];
[signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]];
[signIn setDelegate: self];
//  Xcode error:  Property 'statusField' not found on object type 'LoginViewController'
self.statusField.text = @"Initialized auth2...";

登录正在工作,但没有返回用户信息。

我看到了问题。《迁移指南》中的代码来自一个示例,它引用了该示例中的一些元素。请尝试以下操作:

GIDSignIn* signIn = [GIDSignIn sharedInstance];
signIn.shouldFetchBasicProfile = YES;
[signIn setClientID: kClientId];
[signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]];
[signIn setDelegate: self];
NSLog(@"Initialized auth2...");

顺便说一下:如果您想允许所有Google用户登录,而不仅仅是Google+用户,那么请删除
[登录设置范围:…]
行。

我看到了这个问题。《迁移指南》中的代码来自一个示例,它引用了该示例中的一些元素。请尝试以下操作:

GIDSignIn* signIn = [GIDSignIn sharedInstance];
signIn.shouldFetchBasicProfile = YES;
[signIn setClientID: kClientId];
[signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]];
[signIn setDelegate: self];
NSLog(@"Initialized auth2...");

顺便说一句:如果您想允许所有Google用户登录,而不仅仅是Google+用户,那么请删除
[登录设置范围:…]
行。

您可以复制并粘贴XCode中的完整错误消息到您的问题中吗?请参阅我的答案。您是将现有项目迁移到Google登录,还是将Google登录添加到新项目?能否将XCode中的完整错误消息复制并粘贴到您的问题中?请参阅我的答案。您是在将现有项目迁移到Google登录,还是在将Google登录添加到新项目?是的,我尝试打开if语句,但Google的用户信息仍然没有显示。您应该能够在
signIn:didSignInForUser:withError
委托方法中获取该信息。在实现中放置一个断点,并确保它被调用(然后,检查
GIDGoogleUser
对象,它应该包含概要信息)。医生:是的,我也是这么想的。该
signIn:didSignInForUser:withError
是否应位于AppDelegate或ViewController中?该方法应位于您通过
[signIn setDelegate:self]指定为GIDSignIn的代理的对象中。由您决定在项目中使用哪个对象作为代理。一般来说,包含“登录”按钮的ViewController是一个不错的选择。好的,我想我应该将它与按钮一起放入ViewController。是的,我尝试了展开if语句,但是来自谷歌的用户信息仍然没有显示。你应该能够在
signIn:didsigninfo-froser:withError
委托方法中获得这些信息。在实现中放置一个断点,并确保它被调用(然后,检查
GIDGoogleUser
对象,它应该包含概要信息)。医生:是的,我也是这么想的。该
signIn:didSignInForUser:withError
是否应位于AppDelegate或ViewController中?该方法应位于您通过
[signIn setDelegate:self]指定为GIDSignIn的代理的对象中。由您决定在项目中使用哪个对象作为代理。通常,包含登录按钮的ViewController是一个很好的选择。好的,我想我应该把它和按钮一起放在ViewController中。