2016-10-26 6 views
0

Ich habe jetzt versucht, die komplette Anleitung von facebook zu folgen, aber ich bekomme immer einen Fehler, wenn ich versuche zu bauen.Swift 3 facebook login

Der Fehler, den ich bekommen ist type of expression is ambigous without more context auf dieser Linie LoginManager.logIn([.PublicProfile], viewController: self) { loginResult in

Ich habe

ich mit Indienststellung pod begonnen haben

pod 'FacebookCore' 
pod 'FacebookLogin' 
pod 'FacebookShare' 

und dann pod install

nach diesem Lauf Ich habe dies in meine ViewController

importiert
import FacebookCore 
import FacebookLogin 

ich habe hinzugefügt, dann eine UIButton zu viewDidLoad

let myLoginButton = UIButton(type: .custom) 
myLoginButton.backgroundColor = UIColor.darkGray 
myLoginButton.frame = CGRect(x: 0, y: 0, width: 180, height: 40); 
myLoginButton.center = view.center; 
myLoginButton.setTitle("My Login Button", for: .normal) 

dann habe ich auf die Viewcontroller folgende Funktion hinzugefügt, um diese

@objc func loginButtonClicked() { 
    let loginManager = LoginManager() 
    LoginManager.logIn([.PublicProfile], viewController: self) { loginResult in 
     switch loginResult { 
     case .Failed(let error): 
      print(error) 
     case .Cancelled: 
      print("User cancelled login.") 
     case .Success(let grantedPermissions, let declinedPermissions, let accessToken): 
      print("Logged in!") 
     } 
    } 
} 

Antwort

0

Bitte versuchen Sie es in Objective C. fein arbeitet

https://stackoverflow.com/a/40089906/3901620

in ViewDidLoad initialisieren

let loginManager = LoginManager() 

Verwenden Sie diese Instanz beim Klickereignis auf die Schaltfläche.

func loginButtonClicked() { 
    loginManager.logIn([.PublicProfile], viewController: self) { loginResult in 
     switch loginResult { 
     case .Failed(let error): 
      print(error) 
     case .Cancelled: 
      print("User cancelled login.") 
     case .Success(let grantedPermissions, let declinedPermissions, let accessToken): 
      print("Logged in!") 
     } 
    } 
} 
0

Sie verwenden nicht die Instanzvariable, die Sie zum Aufrufen der "logIn" -Methode erstellt haben. Stattdessen versuchen Sie, logIn in der LoginManager-Klasse aufzurufen.

ersetzen

let loginManager = LoginManager() 
LoginManager.logIn([.PublicProfile], viewController: self) { loginResult in 

Mit

let loginManager = LoginManager() 
loginManager.logIn([.PublicProfile], viewController: self) { loginResult in 
+0

ich habe nichts geändert –

+0

Ersetzen ".PublicProfile" mit ".publicProfile" –