Делегату Google Login не звонят - PullRequest
0 голосов
/ 24 сентября 2019

Я переместил свою логику входа в 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)
    }


}

1 Ответ

0 голосов
/ 24 сентября 2019

Вы создали здесь локальные переменные

 Facebook().login(vc: self)
 Google().login(vc: self)

Таким образом, происходит перераспределение, и делегаты не запускаются, вам нужно сделать их переменными экземпляра

let f =  Facebook() 
let g =  Google() 

дляудерживаемых делегатов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...