2016-11-07 1 views
0

Swift 3.0 프로젝트에서 작업 중이며 Facebook을 사용하여 인증 등록 절차를 밟았습니다. 그래서 기본적으로 FB 통합 부분을 수행했고 한 번 계정에 로그인 한 결과 사용자의 이메일 주소, 이름, ID 및 프로필 사진의 URL을 요청했습니다. 나는 내 콘솔에 들어간다.) 내가받은 형식.페이 스북 통합 결과를

Optional({ 
    email = "[email protected]"; 
    id = xxxxxxxxxx; 
    name = "xxxxxx xxxx"; 
    picture =  { 
     data =   { 
      "is_silhouette" = 0; 
      url = "https://scontent.xx.fbcdn.net/v/t1-1/c2.0.50.50/p50x50/10441341_10201209786847369_5426097469926927988_n.jpg?oh=1b4d8709be17338bc7e877d411b96eee&oe=58CE5B13"; 
     }; 
    }; 
}) 

내 이메일 주소, 이름, ID 입력란을 라벨에 지정하여 인쇄하는 것이 좋습니다.

관련 뷰 컨트롤러의 코드는 다음과 같습니다. 나는 무엇을 추가해야합니까 ??

import UIKit 
import FBSDKLoginKit 

class ViewController: UIViewController,FBSDKLoginButtonDelegate{ 

    @IBOutlet weak var displayLabel: UILabel! 
    @IBOutlet weak var loginButton: UIButton! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let loginButton = FBSDKLoginButton() 
     view.addSubview(loginButton) 
     //frame's are obselete, please use constraints instead because its 2016 after all 
     loginButton.frame = CGRect(x: 16, y: 50, width: view.frame.width - 32, height: 50) 

     loginButton.delegate = self 
     loginButton.readPermissions = ["email", "public_profile"] 

    } 
    func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { 
     print("Did log out of facebook") 
    } 

    @IBAction func loginButtonPressed(_ sender: AnyObject) { 
     FBSDKLoginManager().logIn(withReadPermissions: ["email"], from: self) { (result, err) in 
      if err != nil { 
       print("Custom FB Login failed:", err) 
       return 
      } 
      print("FB login Sucess") 
      print(result?.token.tokenString) 



      self.showEmailAddress() 
     } 
    } 

    func showEmailAddress() { 
     FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id, name, email,picture"]).start { (connection, result, err) in 

      if err != nil { 
       print("Failed to start graph request:", err) 
       return 
      } 
      print(result) 

//   self.displayLabel.text = result["email"]as? NSMutableArray 
     } 
    } 

} 
+0

결과 [ "email"] as? 왜 NSMutableArray 같은 NSMutableArray'? ''끈 '으로? 당신이 넣은 내용에도 불구하고 – Larme

+0

은 'Any에는 구독 회원이 없습니다.'라는 오류 메시지가 나타납니다. 그게 내가 왜 그 선을 논평했는지. 그냥 시도한 것처럼 그 결과를 라벨에 할당하려고합니다. – danutha

+0

'result'는 사전입니다 (우리의 경우'[String : Any]'). – Larme

답변

1

결과 개체의 형식을 [String: Any]으로 지정한 다음 값을 가져옵니다.

if let dic = result as? [String: Any] { 
    self.displayLabel.text = dic["email"] as? String 
    self.displayNameLabel.text = dic["name"] as? String 
    self.displayIdLabel.text = dic["id"] as? String 
}