Вот как выглядит мой AppDelegate:
class AppDelegate: UIResponder, UIApplicationDelegate,GIDSignInDelegate {
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)
}
//For ios 9.0 or above
func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any])
-> Bool {
return GIDSignIn.sharedInstance().handle(url,
sourceApplication:options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: [:])
}
func application(_ application: UIApplication, open url: URL, sourceApplication:
return GIDSignIn.sharedInstance().handle(url,
sourceApplication: sourceApplication,
annotation: annotation)
}
Я добавил кнопку GIDSignIn в свою раскадровку и в своем ViewController назначил ей UIDelegate:
class LoginRegisterViewController: UIViewController,UITextFieldDelegate,GIDSignInUIDelegate {
override func viewDidLoad() {
super.viewDidLoad()
bindUIDelegate()
GIDSignIn.sharedInstance().uiDelegate = self
//registerForKeyboardNotifications()
}
.......
Когда я щелкнулGIDSignInButton, он открывает страницу входа в Google, а затем я ввел свои учетные данные и нажал кнопку входа.Затем он возвращает меня к моему приложению.
Я вставляю точку останова в метод AppDeletgate.sign (), я вижу, что он получает удар после перенаправления обратно в приложение.Но я не вижу своего приложения: метод openurl вызывается, даже когда я ставлю точку останова.
Итак, мой вопрос: когда этот метод получает удар?Говорят, что в конце процесса аутентификации отсюда: https://firebase.google.com/docs/auth/ios/google-signin. Но я не вижу, чтобы его ударили, и похоже, что AppDeletgate.sign () все еще работает нормально, хотя я удаляю метод application: openurl.