GIDSignInDelegate在AppDelegate和ViewController中没有确认?

时间:2016-03-19 14:21:33

标签: swift

AppDelegate和任何ViewController不确认GIDSignInDelegate。 如何获得用户的详细信息? 因为没有调用signIn方法。

1 个答案:

答案 0 :(得分:1)

您收到错误,因为您没有使用所需的委托函数。这些功能还会告诉您有关用户的信息。

关注Google,您需要实现以下功能:

App代表:

// [START signin_handler]
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                  // For client-side use only!
    let idToken = user.authentication.idToken // Safe to send to the server
    let name = user.profile.name
    let email = user.profile.email
    // [START_EXCLUDE]
    NSNotificationCenter.defaultCenter().postNotificationName(
        "ToggleAuthUINotification",
        object: nil,
        userInfo: ["statusText": "Signed in user:\n\(name)"])
    // [END_EXCLUDE]
  } else {
    print("\(error.localizedDescription)")
    // [START_EXCLUDE silent]
    NSNotificationCenter.defaultCenter().postNotificationName(
      "ToggleAuthUINotification", object: nil, userInfo: nil)
    // [END_EXCLUDE]
  }
 }
 // [END signin_handler]

// [START disconnect_handler]
func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!,
withError error: NSError!) {
  // Perform any operations when the user disconnects from app here.
  // [START_EXCLUDE]
  NSNotificationCenter.defaultCenter().postNotificationName(
      "ToggleAuthUINotification",
      object: nil,
      userInfo: ["statusText": "User has disconnected."])
  // [END_EXCLUDE]
}
   // [END disconnect_handler]

查看控制器:

// Implement these methods only if the GIDSignInUIDelegate is not a subclass of UIViewController.

// Stop the UIActivityIndicatorView animation that was started when the user
// pressed the Sign In button
func signInWillDispatch(signIn: GIDSignIn!, error: NSError!) {
  myActivityIndicator.stopAnimating()
   }

// Present a view that prompts the user to sign in with Google
  func signIn(signIn: GIDSignIn!,
 presentViewController viewController: UIViewController!) {
self.presentViewController(viewController, animated: true, completion: nil)
  }

// Dismiss the "Sign in with Google" view
func signIn(signIn: GIDSignIn!,
dismissViewController viewController: UIViewController!) {
   self.dismissViewControllerAnimated(true, completion: nil)
    }