Вот пример, как вы можете сделать это в вашем 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
sign- дюймы Таким образом, вы можете написать одну функцию, которая может получить учетные данные и войти в систему пользователя, которая затем будет оптимизирована.