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() }