Я переместил свою логику входа в Google в отдельный класс, проблема в том, что с этого момента функция делегата 'sign' не вызывается, и я не могу понять, почему.
import Foundation
import Firebase
import GoogleSignIn
class Google: NSObject, GIDSignInDelegate {
func login(vc: UIView){
GIDSignIn.sharedInstance().delegate = self
GIDSignIn.sharedInstance().presentingViewController = UIApplication.shared.keyWindow!.rootViewController!
GIDSignIn.sharedInstance().signIn()
}
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
print("Google Sign In didSignInForUser")
if let error = error {
print(error.localizedDescription)
return
}
guard let authentication = user.authentication else { return }
let credential = GoogleAuthProvider.credential(withIDToken: (authentication.idToken)!, accessToken: (authentication.accessToken)!)
// When user is signed in
Auth.auth().signIn(with: credential, completion: { (user, error) in
if let error = error {
print("Login error: \(error.localizedDescription)")
return
}
})
}
}
Googleкласс вызывается из подпредставления:
import Foundation
import UIKit
class NewToMoonBar: UIView {
@IBOutlet var googleLogin: UIButton!
@IBOutlet var loginButton: UIButton!
static func show(vc: UIView) -> UIView {
let myCustomView = Bundle.main.loadNibNamed("NewToMoonBar", owner: self, options: nil)?.first as? NewToMoonBar
myCustomView!.frame.origin.x = 0
myCustomView!.frame.origin.y = 0
myCustomView?.frame.size.width = vc.frame.width
myCustomView?.frame.size.height = vc.frame.height
myCustomView!.tag = 100
return myCustomView!
}
@IBAction func loginButton(_ sender: Any) {
Facebook().login(vc: self)
}
@IBAction func googleLogin(_ sender: Any) {
Google().login(vc: self)
}
}