J'utilise ce tutoriel pour implémenter Se connecter avec google in app.
pod 'GoogleSignIn', '~> 2.4.0'
GSignIn-Bridging-Header.h
avec #import <GoogleSignIn/GoogleSignIn.h>
intérieur. Créer des types d'URL:
Créer une vue avec la class GIDSignInButton
Code ajouté:
class ViewController: UIViewController, GIDSignInDelegate, GIDSignInUIDelegate { override func viewDidLoad() { super.viewDidLoad() GIDSignIn.sharedInstance().delegate = self GIDSignIn.sharedInstance().uiDelegate = self GIDSignIn.sharedInstance().clientID = "KEY" } func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) { if let err = error { print(error) } else { print(GIDSignIn.sharedInstance().currentUser.profile.name) print(GIDSignIn.sharedInstance().currentUser.profile.email) self.performSegueWithIdentifier("idSegueContent", sender: self) } } func signIn(signIn: GIDSignIn!, didDisconnectWithUser user: GIDGoogleUser!, withError error: NSError!) { } }
Mais quand je clique permet
Il me redirige vers google.com, pas vers l'application.
Dans l'AppDelegate, vous devez append l'implémentation de
func application(application: UIApplication, openURL url: NSURL, sourceApplication: Ssortingng?, annotation: AnyObject) -> Bool { return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) }
Google renvoie des informations via l'URL, la méthode ci-dessus capture ces informations et les renvoie à l'application.
J'ai finalement réparé ceci après une journée de travail. @ayman Ibrahim était fondamentalement, mais je pense que la réponse est un peu plus large. Différentes versions de Swift / Objective-C et du SDK Google appellent différentes versions de la méthode canOpenURL dans AppDelegate. Je ne suis pas certain à 100% à ce sujet, et j'apprécierais la confirmation ou la correction. Voici la version de cette méthode qui a fonctionné pour moi. J'utilise le SDK v. 4.0 de Google, ciblant iOS 9.1 et utilisant Swift 3.0:
func application(_ application: UIApplication, open url: URL, sourceApplication: Ssortingng?, annotation: Any) -> Bool { let checkFB = FBSDKApplicationDelegate.sharedInstance().application(application, open: url, sourceApplication: sourceApplication, annotation: annotation) let checkGoogle = GIDSignIn.sharedInstance().handle(url as URL!,sourceApplication: sourceApplication,annotation: annotation) return checkGoogle || checkFB }
J'utilise aussi le FBSDK, alors ignorez cette ligne.
J'ai trouvé une autre réponse pour cela. Dans mon cas, dans AppDelegate, j'ai implémenté 2 methods déléguées
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
et
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSSsortingng *)sourceApplication annotation:(id)annotation
La première est la méthode déléguée et ne devrait plus être implémentée, elle a été remplacée par la seconde méthode. Mais d'une manière ou d'une autre, j'utilise toujours les deux et j'ajoute juste
return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation];
dans le second, puis de nouveau, il suffit de callback à la première méthode, puis il ne navigue plus dans mon application.
Donc, je veux postr mon cas pour quelqu'un qui pourrait avoir cette erreur, il m'a fallu trop longtime pour savoir