2016-09-18 13 views
6

का उपयोग कर फेसबुक से ईमेल पुनर्प्राप्त नहीं कर सकता है नमस्ते मैं फेसबुक से अपना ईमेल पुनर्प्राप्त करने का प्रयास कर रहा हूं क्योंकि मैं स्विफ्ट का उपयोग कर फेसबुक आईओएस एसडीके खेल रहा हूं। आईओएस मंच 10, स्विफ्ट 3 और एक्सकोड 8 है। मैंने ऑनलाइन ट्यूटोरियल्स का पालन किया लेकिन ईमेल पुनर्प्राप्त करने में परेशानी हो रही है।स्विफ्ट 3 और आईओएस 10

if FBSDKAccessToken.current() == nil { 
      print("I got token") 
      let fbButton = FBSDKLoginButton() 
      fbButton.readPermissions = ["public_profile", "email", "user_friends"] 
      view.addSubview(fbButton) 
      fbButton.center = view.center 
      fbButton.delegate = self 
      self.fetchprofile() 
     } 

     else { 
      print("Dont have token") 
      let loginView : FBSDKLoginButton = FBSDKLoginButton() 
      self.view.addSubview(loginView) 
      loginView.center = self.view.center 
      loginView.readPermissions = ["public_profile", "email", "user_friends"] 
      loginView.delegate = self 
     } 

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { 
     if error != nil { 
      print(error.localizedDescription) 
      return 
     } 
     print("I'm in") 
     fetchprofile() 
    } 

func fetchprofile() { 

     print("Getting profile") 

     let parameters = ["fields": "email"] 

     let graphRequest:FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: parameters, httpMethod: "GET") 

     graphRequest.start(completionHandler: {(connection, result, error) -> Void in 

      if error != nil { 
       print("Error retrieving details: \(error?.localizedDescription)") 
       return 
      } 

      guard let result = result as? [String:[AnyObject]], let email = result["email"] else { 
       return 
      } 
      print("Email: \(email)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n") 
      self.view.backgroundColor = UIColor.red 

     }) 
    } 

और मेरे appdelegate.swift फ़ाइल में:

//have both google and facebook signin. Google works but facebook doesn't 
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
     return GIDSignIn.sharedInstance().handle(url, 
                sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, 
                annotation: options[UIApplicationOpenURLOptionsKey.annotation]) || 
     FBSDKApplicationDelegate.sharedInstance().application(app, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String, annotation: options[UIApplicationOpenURLOptionsKey.annotation]) 
    } 

मैं में प्रवेश करें और लॉग आउट करने में सक्षम है, लेकिन ईमेल पुनः प्राप्त करने में सक्षम नहीं हूँ

नीचे मेरी कोड है।

अद्यतन असल में जब मैं वास्तव में प्रिंट (ईमेल) पारित मैं इसे एक वैकल्पिक बयान के रूप में कंसोल पर देख सकते हैं। मैं वैकल्पिक बयान के बिना मुसीबत यह प्रदर्शित हो रही है

+0

उपयोगकर्ता एप्लिकेशन को ईमेल अनुमति दी है उपयोगकर्ता एक सत्यापित ईमेल पता है क्या – WizKid

+0

@WizKid वास्तव में मैं ईमेल आईडी लेकिन इसकी वैकल्पिक देख सकते हैं? मुझे लगता है कि मेरी समस्या इसे प्रिंट करने से आती है। गार्ड स्टेटमेंट – user3497437

+0

में समस्या है मुझे एक ही समस्या है – Carlo

उत्तर

11

मैं इस तरह से समस्या हल कर दिया है:

func fetchProfile(){ 
    FBSDKGraphRequest(graphPath: "/me", parameters: ["fields" : "email, name, id, gender"]) 
     .start(completionHandler: { (connection, result, error) in 
      guard let result = result as? NSDictionary, let email = result["email"] as? String, 
       let user_name = result["name"] as? String, 
       let user_gender = result["gender"] as? String, 
       let user_id_fb = result["id"] as? String else { 
        return 
      }   
     }) 

    } 
+1

देर से क्षमा करें उत्तर और धन्यवाद। मैं बाहर निकल गया हूं और कुछ दिनों के लिए। प्रतिक्रिया के लिए फिर से धन्यवाद। अभी भी बहुत नया है और बहुत कुछ चुनना – user3497437

+0

कोई समस्या नहीं, धन्यवाद – Carlo

+0

यह पूरी तरह से काम करता है। गार्ड काफी भ्रमित हो सकता है लेकिन से बनाता है एक बार जब आप इसे पढ़ लेंगे। स्विफ्ट 3, एक्सकोड 8 पर मेरे लिए काम किया। बहुत बहुत धन्यवाद। –

0

यह समाधान "/" में graphPath पैरामीटर के बिना मेरे लिए अच्छी तरह से काम!
FBSDKGraphRequest (graphPath: "मुझे" .....

संबंधित मुद्दे