2016-09-18 27 views
6

Merhaba e-postalarımı facebook ios sdk'yi oynatırken facebook'tan almaya çalışıyorum. IOS platformu 10, hızlı 3 ve Xcode 8'dir. Çevrimiçi eğiticileri takip ettim ancak e-posta almada sorun yaşıyorum. Ben giriş ve çıkış yapmak mümkün ama e-posta almak mümkün değilimHızlı 3 ve ios kullanarak facebook'tan e-posta alınamıyor ios 10

//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]) 
    } 

:

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 

     }) 
    } 

ve benim appdelegate.swift dosyasında:

aşağıda benim kodudur. ben aslında baskı (e-posta) geçerken

GÜNCELLEME Aslında ben isteğe bağlı bir ifadesi olarak konsolda görebilirsiniz. Ben opsiyonel statment olmadan görüntülendiği sorun yaşıyorum

+0

kullanıcı uygulamada e-posta izni mü kullanıcı doğrulanmış bir e-posta adresi var mı – WizKid

+0

aslında ben e-posta kimliğini ancak isteğe bağlı görebilirsiniz @WizKid? Ben sorunum yazdırmak geliyor sorun olduğunu düşünüyorum. – user3497437

+0

bekçi sorunu ile sorunu yaşıyorsanız ben sorunu çözebilir – Carlo

cevap

11

Bu şekilde sorunu çözmüş: Bu çözüm "/" graphPath parametresinde olmadan benim için iyi çalıştı

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

için üzgünüm cevap ve teşekkürler.Geçmiş ve bir kaç günlüğüne çıktım.Aşağıdaki yanıt için tekrar teşekkürler.Çok hızlı ve hızlı bir şekilde almak için çok yeni – user3497437

+0

Sorun yok, teşekkürler – Carlo

+0

Bu mükemmel bir şekilde çalıştı.Çok kafa karıştırıcı olabilir ama se Bir kere okuduktan sonra. Swift 3, Xcode 8 için benim için çalıştı. Çok teşekkürler. –

0

!
FBSDKGraphRequest (graphPath: "bana" .....