5
votes

Comment réparer "L'utilisateur a annulé le flux de connexion" avec Se connecter avec Google sur iOS?

J'intègre Connexion à Google avec le SDK Firebase iOS. Lorsqu'un utilisateur appuie sur le bouton GIDSignIn , l'application affiche une alerte indiquant que "MyAPP" souhaite utiliser Google.com pour se connecter , mais l'alerte se ferme rapidement. L'erreur que j'obtiens dans la méthode didSignInFor user: GIDGoogleUser comme suit:

2019-02-21 16:54:13.104279+0530 MyApp[18743:185089] [Warning] Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<SFAuthenticationViewController: 0x7fa327945800>)
[DEBUG] Google sign-in error: Error Domain=com.google.GIDSignIn Code=-5 "The user canceled the sign-in flow." UserInfo={NSLocalizedDescription=The user canceled the sign-in flow.}

J'ai suivi la Authentifier à l'aide de la documentation Google Sign-In sur iOS .

J'ai également essayé la réponse à l'adresse Google Sign-In se bloque sur iOS 9 en essayant d'appeler canOpenURL , mais cela ne fonctionne pas.

Le AppDelegate implémente également GIDSignInUIDelegate .

Si je change le bouton de GIDSignInButton à UIButton , cela fonctionne, mais le style est perdu.


0 commentaires

3 Réponses :


-1
votes

Dans Appdelegate , essayez d'utiliser le code ci-dessous

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {

    let result = GIDSignIn.sharedInstance().handle(url,
                                                    sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
                                                    annotation: options[UIApplication.OpenURLOptionsKey.annotation])
    return result

}


0 commentaires

9
votes

J'ai également été confronté au problème avant. L'objet GIDSignInButton n'a pas besoin de addTarget dans le code ou dans la liaison @IBAction . La classe GIDSignInButton gère déjà cette action pour nous.


0 commentaires

3
votes

Si vous essayez d'exécuter GIDSignIn.sharedInstance () ?. signIn () dans @IBAction . Vous pouvez exécuter GIDSignIn.sharedInstance () ?. presentationViewController = self juste avant la connexion au lieu de l'intérieur de viewDidLoad () .

@IBAction func googleLogin(_ sender: UIButton) {
    GIDSignIn.sharedInstance()?.presentingViewController = self
    GIDSignIn.sharedInstance()?.signIn()
}


0 commentaires