2017-02-10 1 views
1

Ich verwende Swift 3 und versuche, Google Mit diesen tutorialSwift - Google-Authentifizierung

anmelden, um eine überbrück Header-Datei mit Erstellt:

#import <Google/SignIn.h> 

My Build-Einstellungen verweisen auf die korrekte Header-Datei enter image description here

Doch wenn ich die App Delegierter zu implementieren gehen erhalte ich diesen Fehler:

*Use of undeclared type GIDSignInDelegate* 

enter image description here

Was kann ich möglicherweise vermissen?

+0

Überprüfen Sie die Zielzugehörigkeit der Datei mit GIDSignInDelegate. Hast du es zu deinem Hauptziel hinzugefügt? –

Antwort

4

Bitte importieren Sie kein Framework wie Google. Xcode greift automatisch auf das erforderliche Modul zu, wenn Sie in der Header-Bridge-Datei korrekt hinzugefügt haben.

und verwenden Sie folgende Methode, um Ihren Fehler zu entfernen.

public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) { 

    if (error == nil) { 
     // Perform any operations on signed in user here. 
     let userId = user.userID     // For client-side use only! 
     let idToken = user.authentication.idToken // Safe to send to the server 
     let fullName = user.profile.name 
     let givenName = user.profile.givenName 
     let familyName = user.profile.familyName 
     let email = user.profile.email 
     // ... 
    } else { 
     print("\(error.localizedDescription)") 
    } 
} 
0

Ihr Problem zu lösen, müssen Sie folgende Dinge tun:

  1. Import die Kapsel auf dem Tutorial erwähnten Sie
  2. pod installieren
  3. im AppDelegate erwähnt haben.swift Import folgende import GoogleSignIn
  4. implementieren die folgenden Methoden:

    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool 
    { 
        let handled = GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: [:]) 
        return handled 
    } 
    

und diese Funktion:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { 
     return GIDSignIn.sharedInstance().handle(url,sourceApplication: sourceApplication, annotation: annotation) 
    } 
  1. In Ihrem View-Controller müssen Sie die folgenden Import enthalten

    import FirebaseAuth 
    import GoogleSignIn 
    
  2. stellen Sie sicher, dass Ihre View-Controller die folgenden

    GIDSignInUIDelegate, GIDSignInDelegate

  3. In der viewDidLoad Funktion fügen Sie den folgenden implementieren:

    GIDSignIn.sharedInstance().clientID = FIRApp.defaultApp()?.options.clientID 
    GIDSignIn.sharedInstance().delegate = self 
    GIDSignIn.sharedInstance().uiDelegate = self 
    
  4. und schließlich Umsetzung des Verfahrens SignIn

    func signIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) { 
    if (error == nil) { 
        // Perform any operations on signed in user here. 
        let userId = user.userID     // For client-side use only! 
        let idToken = user.authentication.idToken // Safe to send to the server 
        let fullName = user.profile.name 
        let givenName = user.profile.givenName 
        let familyName = user.profile.familyName 
        let email = user.profile.email 
        // ... 
    } else { 
        print("\(error.localizedDescription)") 
    } 
    

    }

  5. In Ihrem Storyboard eine Ansicht hinzufügen und aus GIDSignInButton

    class = GIDSignInButton

  6. machen verlängern, wenn Sie das Zeichen out-Methode implementieren möchten: fügen Sie einfach die folgende Methode zum gleichen view-Controller

    func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!, withError error: NSError!) { 
    // Perform any operations when the user disconnects from app here. 
    // ... 
    } 
    
  7. das Projekt starten, wenn Sie im view-Controller sind, wo Sie die oben genannten Methoden hinzugefügt haben, werden Sie die google-Zeichen in Hintern bekommen auf, klicken Sie darauf und ein webView wird und schließlich mit Ihrem Google-Konto anmelden, geöffnet werden und Sie werden

PS zurück an die Anwendung weitergeleitet: Ich weiß nicht, warum Google sowohl die signin genannt und signout-Methoden wie SIGNIN, müssen sie das in ihren Bibliotheken ändern. Für eine bessere Erklärung müssen Sie das Tutorial, das Sie verlinkt haben, besser lesen. Wenn Sie Fragen haben, freue ich mich auf Ihre Fragen zu lesen.