gpt4 book ai didi

ios - Firebase IOS 谷歌登录 : Change views after successfully signed in

转载 作者:行者123 更新时间:2023-12-04 10:26:58 25 4
gpt4 key购买 nike

我正在尝试构建我的第一个 IOS 应用程序并尝试按照此处的文档实现 Firebase Google 登录:https://firebase.google.com/docs/auth/ios/google-signin .如果用户成功登录,问题是尝试更改 View 。我已经尝试了其他堆栈溢出帖子中有关此问题的几种解决方案,但似乎都没有。我相信这是因为其他解决方案不必考虑新的 sceneDelegate 文件,因为它们使用的是以前版本的 XCode。

Google 登录是在 App Delegate 中实现的,实际尝试对用户进行身份验证的特定代码(在 App 委托(delegate)中)在这里:

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
// ...
if let error = error {
// ...
return
}

guard let authentication = user.authentication else { return }
let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
accessToken: authentication.accessToken)

Auth.auth().signIn(with: credential) { (authResult, error) in
if let error = error {
// ...
return
}
// User is signed in
// Here i want to change views
}

}

用户登录后如何更改 View ?我已经尝试了所有我能找到的东西,但一切似乎都不起作用或应用程序崩溃。

任何帮助深表感谢

最佳答案

这是一个例子,你怎么能在你的LoginVC :

class LoginViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

GIDSignIn.sharedInstance().delegate = self

GIDSignIn.sharedInstance()?.presentingViewController = self

}
}

这是我在 viewDidLoad 中添加的内容方法。之后,我创建了一个自定义按钮,它继承到 UIButton .我以编程方式创建了该按钮,但您可以使用 @IBOutlet weak var googleB: UIButton! .然后,点击该按钮,您可以添加以下内容:
@IBAction func googleBTap(_ sender: UIButton) {

GIDSignIn.sharedInstance().signIn()
}

然后,我创建了 extension对于 GIDSignInDelegate .
extension LoginViewController: GIDSignInDelegate {

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

if let error = error {

print(error)

return
}

guard let email = user.profile.email else { return }

guard let authentication = user.authentication else { return }

let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
accessToken: authentication.accessToken)
Auth.auth().signIn(with: credential) { (authResult, error) in
if let error = error {
print(error)
return
}

//If login is successful then add
self.navigationController.pushViewController(nextVC(), animated: true)
//OR
self.performSegue() //<-- Whatever goes in here, I don't use these methods as I create views programitacally, but you can use it here and move to next view
}

}

}

好吧,这是一种方法,但是随着您的应用程序变得越来越大,最好创建一个 FirebaseHelper类,您将使用许多常用方法,例如 fetchProviders , signIn对于 Google , Facebook , Apple登录。因此,您可以编写一个可以获取凭证并登录用户的函数,然后对其进行优化。

关于ios - Firebase IOS 谷歌登录 : Change views after successfully signed in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60598468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com