2015-07-06 4 views
5

Ich brauche die Facebook-Benutzerinformationen zu erhalten, wenn ich einen neuen Benutzer durch Parse anmelden. Zur Zeit logge ich mich in den neuen Benutzer ein. scheint die Benutzerdetails nicht zu bekommen. Ich habe Code gesehen, der auf Ziel geschrieben wurde - c. die meisten Funktionen funktionieren nicht mehrHolen Sie sich Facebook-Benutzerdetails mit swift und parse

Die Facebook iOS sdks, die ich betreibe, ist v4.3.0.

@IBAction func facebookButton(sender: AnyObject) { 

    PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) { 
     (user: PFUser?, error: NSError?) -> Void in 
     if let user = user { 
      if user.isNew { 
       println("User signed up and logged in through Facebook!") 
      } else { 
       println("User logged in through Facebook!") 
      } 
     } else { 
      println("Uh oh. The user cancelled the Facebook login.") 
     } 
    } 
} 

Antwort

8

die Benutzerdaten erhalten Sie einen FBSDKGraphRequest nach dem Login-Anfrage zu senden.

Dies kann im if let user = user {...} Block erfolgen.

// Create request for user's Facebook data 
    let request = FBSDKGraphRequest(graphPath:"me", parameters:nil) 

    // Send request to Facebook 
    request.startWithCompletionHandler { 

     (connection, result, error) in 

     if error != nil { 
      // Some error checking here 
     } 
     else if let userData = result as? [String:AnyObject] { 

      // Access user data 
      let username = userData["name"] as? String 

      // .... 
     } 
    }    
+0

arbeitete wie ein Charme, dank –

+0

Hallo Ich versuche, Benutzer E-Mail holen verwenden lassen username = userData ["name"] als? String, aber es zeigt nichts. Ich erhalte den Benutzernamen erfolgreich. – Vakas

+1

Ich habe es behoben. Sie müssen Parameter haben: ["fields": "ID, E-Mail, Name, Vorname, Nachname"] – Vakas

0

Für die neue Facebook-API und die Version von Swift 3.1 Sie etwas tun können:

if((FBSDKAccessToken.current()) != nil) { 
    FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id,name,first_name,last_name,email"]).start(completionHandler: {(connection, result, error) -> Void in 

     if(error != nil) { 
      print("Some error occurred."); 
     } else { 
      print(result!) 
     } 
    }) 
}