2015-07-22 4 views
6

मुझे सफलतापूर्वक मेरे ऐप में फेसबुक लॉगिन लागू किया गया है, लेकिन मैं उपयोगकर्ता से ईमेल पता पूछने/पुनर्प्राप्त करने में सक्षम नहीं हूं। जब मैं ईमेल मैं एक nill मूल्य मिला प्रदर्शित करने का प्रयासईमेल रीट्राइव ईमेल फेसबुकएसडीके और स्विफ्ट

fetched user: { 
    id = 808101565906152; 
    name = "Marcelo Pontes Machado"; 
} 

:

import UIKit 

class testViewController: UIViewController, FBSDKLoginButtonDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     if (FBSDKAccessToken.currentAccessToken() != nil) 
     { 
      // User is already logged in, do work such as go to next view controller. 

      // Or Show Logout Button 
      let loginView : FBSDKLoginButton = FBSDKLoginButton() 
      self.view.addSubview(loginView) 
      loginView.center = self.view.center 
      loginView.readPermissions = ["public_profile", "email", "user_friends"] 
      loginView.delegate = self 
      self.returnUserData() 
     } 
     else 
     { 
      let loginView : FBSDKLoginButton = FBSDKLoginButton() 
      self.view.addSubview(loginView) 
      loginView.center = self.view.center 
      loginView.readPermissions = ["public_profile", "email", "user_friends"] 
      loginView.delegate = self 
     } 

    } 

    // Facebook Delegate Methods 

    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
     println("User Logged In") 

     if ((error) != nil) 
     { 
      // Process error 
     } 
     else if result.isCancelled { 
      // Handle cancellations 
     } 
     else { 
      // If you ask for multiple permissions at once, you 
      // should check if specific permissions missing 
      if result.grantedPermissions.contains("email") 
      { 
       // Do work 
      } 

      self.returnUserData() 
     } 

    } 

    func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) { 
     println("User Logged Out") 
    } 

    func returnUserData() { 
     let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil) 
     graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 

      if ((error) != nil) 
      { 
       // Process error 
       println("Error: \(error)") 
      } 
      else 
      { 
       println("fetched user: \(result)") 
       let userName : NSString = result.valueForKey("name") as! NSString 
       println("User Name is: \(userName)") 
       let userEmail : NSString = result.valueForKey("email") as! NSString 
       println("User Email is: \(userEmail)") 
      } 
     }) 
    } 

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

} 

और println उत्पादन:

मैं निम्नलिखित कोड है।

मुझे लगता है कि कोड सही है, शायद कुछ एसडीके जिन्हें मैं आयात करना याद करता हूं?

धन्यवाद।

उत्तर

13

अपने मानकों

FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id,email,name,picture.width(480).height(480)"]).startWithCompletionHandler({ 

में खेतों आप ग्राफ़ अनुरोध से वापस चाहते हैं रखो क्योंकि ग्राफ़ एपीआई कभी कभी ही जानकारी का एक न्यूनतम राशि वापस कर सकते हैं जब तक अन्यथा अनुरोध किया।

+0

काम किया! मैंने .startWithCompletionHandler के बिना उपयोग किया ({, यह भी सही है? धन्यवाद @thefredelement –