2015-07-06 34 views
5

我需要通過解析來登錄新用戶時獲取Facebook用戶信息的詳細信息。目前我正在登錄下面的新用戶。似乎無法獲得用戶的詳細信息。我已經看到了一些編寫在Objective-C上的代碼。大多數功能不再工作快速解析Facebook用戶詳細信息

我運行的Facebook iOS sdks是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.") 
     } 
    } 
} 

回答

8

要獲取用戶詳細信息,您必須在登錄請求後發送FBSDKGraphRequest。

這可以在if let user = user {...}塊內完成。

// 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

工作就像一個魅力,謝謝 –

+0

嗨,我嘗試使用讓獲取用戶的電子郵件username = userData [「name」] as?字符串,但它顯示爲零。我正在成功獲取用戶名。 – Vakas

+1

我修好了。你需要有參數:[「fields」:「id,email,name,first_name,last_name」] – Vakas

0

對於雨燕3.1新的Facebook API和版本,你可以做這樣的事情:

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!) 
     } 
    }) 
}