【问题标题】:Firebase google auth (swift)Firebase 谷歌身份验证(快速)
【发布时间】:2018-04-30 07:18:09
【问题描述】:

按照 firebase 文档,我添加了使用 google 帐户的身份验证,这是我在应用程序委托中拥有的代码的一部分

 func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {

        if let error = error {
            print("Failed to log into Google: ", error)
            return
        }
            print("Successfully logged into Google", user)
        guard let idToken = user.authentication.idToken else { return }
        guard let accessToken = user.authentication.accessToken else { return }
        let credentials = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)

        Auth.auth().signIn(with: credentials, completion: { (user, error) in
            if let err = error {
                print("Failed to create a Firebase User with Google account: ", err)
                return
            }

            guard let uid = user?.uid else { return }

            print("Successfully logged into Firebase with Google", uid)

        })
    }


    func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) {
        // Perform any operations when the user disconnects from app here.
        // ...
    }

但谷歌按钮

 fileprivate func setupGoogleButtons() {


        googleButton.frame = CGRect(x: 189, y: 532, width: 118, height: 41)
        view.addSubview(googleButton)

        GIDSignIn.sharedInstance().uiDelegate = self
}

显然在 viewController 中,我想做的是在用户使用他的谷歌帐户登录后自动self.performSegue(withIdentifier: "goToHome1", sender: self),因为在登录后的那一刻,用户总是在同一个 VC 上找到。我怎样才能做到这一点?

更新

我解决了这个问题Google and Facebook Firebase Auth using swift 3

【问题讨论】:

  • 请更新您的问题,以阐明您想要实现的目标以及您已经尝试过的目标。这部分我不清楚:“我想做的是自动...... performSegue......在登录后的那一刻,用户总是在同一个VC上找到。”里面有功能和技术方面的内容。

标签: ios swift firebase swift3


【解决方案1】:

如果没有错误,则用户成功登录,因此您应该继续。按钮本身只是调用登录功能。根据登录是失败还是成功,您会发出警报或继续。

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
    if let error = error {
        print("Failed to log into Google: ", error)
        return
    }

    print("Successfully logged into Google", user)
    guard let idToken = user.authentication.idToken else { return }
    guard let accessToken = user.authentication.accessToken else { return }
    let credentials = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)

    Auth.auth().signIn(with: credentials, completion: { (user, error) in
        if let err = error {
            print("Failed to create a Firebase User with Google account: ", err)
            return
        }

        guard let uid = user?.uid else { return }
        print("Successfully logged into Firebase with Google", uid)
        // segue here
        DispatchQueue.main.async {
            self.performSegue(withIdentifier: "goToHome1", sender: self)
        }
    })
}

【讨论】:

    【解决方案2】:

    Auth 类有一个函数addAuthStateDidChangeListener:,检查一下here

    任何时候用户改变都会触发,特别是用户登录时,回调会返回一个非零用户。这就是你想要执行转场的时间。

    【讨论】:

      猜你喜欢
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2021-12-20
      • 2016-12-08
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多