IOS应用程序无法获取谷歌用户数据

时间:2016-10-19 10:42:58

标签: ios swift xcode login google-email-settings-api

我正在学习用Swift编写ios应用程序。

但是,当我按照Google Developers页面上的说明进行操作时。

https://developers.google.com/identity/sign-in/ios/start?ver=swift

Xcode显示许多编译错误。

例如,指令上的这段代码需要在AppDelegate中添加:

func application(application: UIApplication,
  openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
    var options: [String: AnyObject] = [UIApplicationOpenURLOptionsSourceApplicationKey: sourceApplication,
                                        UIApplicationOpenURLOptionsAnnotationKey: annotation]
    return GIDSignIn.sharedInstance().handleURL(url,
        sourceApplication: sourceApplication,
        annotation: annotation)
}

这将显示

ambiguous reference to member 'subscript'

我需要将此代码更改为:

private func application(application: UIApplication,
                     openURL url: URL, options: [String: AnyObject]) -> Bool {
        return GIDSignIn.sharedInstance().handle(url as URL!,
                                                    sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication.rawValue] as? String,
                                                    annotation: options[UIApplicationOpenURLOptionsKey.annotation.rawValue])
    }

然后它将通过编译器。

另一个编译错误是需要在AppDelegate中添加两个代码:

func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!,
  withError error: NSError!) {
    if (error == nil) {
      // Perform any operations on signed in user here.
      let userId = user.userID    
      // ...
    } else {
      print("\(error.localizedDescription)")
    }
}
func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!,
  withError error: NSError!) {
    // Perform any operations when the user disconnects from app here.
    // ...
}

调试器告诉我,我需要替换函数名

“signIn”是“签名”

它将通过编译器。

最后两个编译错误与上行相同。

编译器告诉我,我需要在我的UIviewcontroller代码中将“signIn”函数更改为“sign”。

“而是”

虽然我完全遵循编译器指令,并且成功运行模拟器,但当用户允许app获取用户数据时,我仍然无法获取数据。

编译器为我展示了这个:

  

实施   application:openURL:sourceApplication:annotation:not found。请   将处理程序添加到App Delegate中。类: MyClassName .AppDelegate

SO ......

有人知道为什么应用程序找不到我的处理程序吗?

我猜这些编译错误是ios更新到10的原因,然后我不知道改变函数名称的动作是否让我无法获取谷歌的数据。

感谢您的回答。 :)

Google Developers页面: https://developers.google.com/identity/sign-in/ios/sign-in?ver=swift

0 个答案:

没有答案