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.
3 Réponses :
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
}
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.
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()
}