2016-10-03 11 views
0

Ich verwende das Facebook SDK für die Anmeldung mit iOS mit Swift 3.graphRequest.start gibt keine Daten zurück

Das ist mein Code. Das Problem ist, dass keine Werte zurückgegeben werden.

import UIKit 

Klasse Viewcontroller: UIViewController {

@IBOutlet weak var email: UITextField! 
@IBOutlet weak var password: UITextField! 
@IBOutlet weak var uLoginButton: UIButton! 

let loginButton: FBSDKLoginButton = { 

    let button = FBSDKLoginButton() 

    button.readPermissions = ["email"] 

    return button; 

}() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    view.addSubview(loginButton); 
    loginButton.center = view.center 
    loginButton.delegate = self 

    if (FBSDKAccessToken.current() != nil) { 
     fetchProfile(); 
    } 

    self.style() 
} 

func fetchProfile(){ 

    let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "email, name, first_name, last_name, picture.type(large)"]) 

    let connection = FBSDKGraphRequestConnection() 

    connection.add(graphRequest, completionHandler: { (connection, result, error) in 

     if error != nil { 

      //do something with error 
      print("No Data returned") 
      print(result) 
     } else { 

      //do something with result 
      print("Data returned") 
      print(result) 

     } 

    }) 

    connection.start() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func style(){ 
    self.email.layer.cornerRadius = 15; 
    self.password.layer.cornerRadius = 15; 
    self.uLoginButton.layer.cornerRadius = 15; 

} 

}

Verlängerung Viewcontroller: FBSDKLoginButtonDelegate {

internal func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { 

    // when the login is correct! 
    print("Success login!"); 
    fetchProfile() 
} 

internal func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { 
    FBSDKAppEvents.activateApp() 
} 

internal func loginButtonWillLogin(_ loginButton: FBSDKLoginButton!) -> Bool { 
    return true 
} 

}

Antwort

0

In Swift 3, thi s ist, wie Sie eine Graph-Anfrage durchführen möchten.

  1. initialisieren FBSDKGraphRequest
  2. initialisieren FBSDKGraphRequestConnection
  3. Add Anfrage Anschluss
  4. starten Verbindung zu beantragen.

so,

let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "email"]) 
    let connection = FBSDKGraphRequestConnection() 
    connection.add(graphRequest, completionHandler: { (connection, result, error) in 

     if error != nil { 

      //do something with error 

     } else { 

      //do something with result 

     } 

    }) 

    connection.start() 
+0

Hallo! Dieser Lauf in Ordnung! aber, ich nicht, um die Daten zu erhalten (E-Mail, user_name, etc ...) ... Ich teste mit "print (Ergebnis)", aber, keine Daten zurückgegeben –

+0

In diesem Fall möglicherweise nicht ein Facebook-Benutzer An dem Punkt, an dem Sie die Graph-Anforderung aufrufen. Rufen Sie dies vor oder nach dem Anmelden des Benutzers an? – DevKyle

+0

Ich bearbeite den Code-Inhalt, schaue und erzähle mir –