2016-08-14 2 views
0

Swift에서 Facebook 프로필 사진과 사용자 이름으로 프로필을 만들려고합니다. ViewController에서 로그인 단추가있는 위치로 가져올 수 있지만 필요한 경우 프로필 ViewController에 나타나지 않습니다. 로그인 페이지에 대한Facebook 프로필 사진이 표시되지 않습니다 Swift

: 여기가 코드를 사용한다

import UIKit 

class Profile: UIViewController { 

@IBOutlet weak var profilePicture: UIImageView! 
@IBOutlet weak var userName: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) 
    { 
     FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in 

      let strFirstName: String = (result.objectForKey("first_name") as? String)! 
      let strLastName: String = (result.objectForKey("last_name") as? String)! 
      let strPictureURL: String = (result.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as? String)! 

      self.userName.text = "Welcome, \(strFirstName) \(strLastName)" 
      self.profilePicture.image = UIImage(data: NSData(contentsOfURL: NSURL(string: strPictureURL)!)!) 
     } 
    } 

} 

} 

내가 처음 사이에 링크를 누락 생각 : 여기

import UIKit 

class ViewController: UIViewController, FBSDKLoginButtonDelegate 
{ 

@IBOutlet var btnFacebook: FBSDKLoginButton! 
@IBOutlet var ivUserProfileImage: UIImageView! 
@IBOutlet var lblName: UILabel! 



override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    configureFacebook() 
} 



func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) 
{ 
    FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in 

     let strFirstName: String = (result.objectForKey("first_name") as? String)! 
     let strLastName: String = (result.objectForKey("last_name") as? String)! 
     let strPictureURL: String = (result.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as? String)! 

     self.lblName.text = "Welcome, \(strFirstName) \(strLastName)" 
     self.ivUserProfileImage.image = UIImage(data: NSData(contentsOfURL: NSURL(string: strPictureURL)!)!) 
    } 
} 

func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) 
{ 
    let loginManager: FBSDKLoginManager = FBSDKLoginManager() 
    loginManager.logOut() 

    ivUserProfileImage.image = nil 
    lblName.text = "" 
} 



func configureFacebook() 
{ 
    btnFacebook.readPermissions = ["public_profile", "email", "user_friends"]; 
    btnFacebook.delegate = self 
} 

} 

프로파일의 ViewController 코드입니다 VC와 프로필 VC하지만 잘 모르겠습니다.

미리 도움을 주셔서 감사합니다.

+0

에서

** (loginButton : FBSDKLoginButton! didCompleteWithResult 결과 : FBSDKLoginManagerLoginResult! 오류! NSError) ** 기능 모두에서 VC –

+0

나에게도 논리적으로 보이지는 않았지만 프로필 VC에서 strPictureURL을 계속 호출 할 수 없었으므로 다른 VC의 API에 두 번째 호출을 시도 했으므로 분명히 좋은 아이디어는 아닙니다. – TheoF

+0

** func prepareForSegue (segue : UIStoryboardSegue, 보낸 사람 : AnyObject?)를 사용하여 ViewController에서 strPictureURL을 ProfileVC로 전달할 수 있습니다. ** –

답변

1
import UIKit 

class ViewController: UIViewController, FBSDKLoginButtonDelegate { 
@IBOutlet var btnFacebook: FBSDKLoginButton! 
@IBOutlet var ivUserProfileImage: UIImageView! 
@IBOutlet var lblName: UILabel! 
var object: AnyObject! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    configureFacebook() 
} 

func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) 
{ 
    FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in 

self.object = result 
self.performSegueWithIdentifier("YourSegueID", sender: self) 

} 

func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) 
{ 
    let loginManager: FBSDKLoginManager = FBSDKLoginManager() 
    loginManager.logOut() 

    ivUserProfileImage.image = nil 
    lblName.text = "" 
} 
    func configureFacebook() 
    { 
    btnFacebook.readPermissions = ["public_profile", "email", "user_friends"]; 
    btnFacebook.delegate = self 
    } 


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
       if segue.identifier == "YourSegueID" { 
        let dvc = segue.destinationViewController as? ViewController2 
         dvc!.object = object // sending facebook data from VC to ProfileVC 
       } 
      } 

} loginButton FUNC 당신이 전화하는 이유 ProfileVC

import UIKit 
class Profile: UIViewController { 

@IBOutlet weak var profilePicture: UIImageView! 
@IBOutlet weak var userName: UILabel! 
var object: AnyObject! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    print(object)// your facebook object 

print(object.objectForKey("first_name")as! String) 
print(object.objectForKey("id") as! String) 
print(object.objectForKey("last_name")as! String) 

let image = object.objectForKey("picture") as! NSObject 
let data = image.valueForKey("data") as! NSObject 
let ProfilepicUrl = data.valueForKey("url") as! String 
print(ProfilepicUrl) 
} 
+0

자세한 답변을 주셔서 감사합니다. 작동하지만 콘솔에있는 데이터를 가져옵니다. 내 UIImage 및 UILabel 요소에 내 화면에 표시 할 수 있습니다. – TheoF

+0

프로필 VC ..에서? –

+0

예,이 안에 있습니다. – TheoF

관련 문제