繁体   English   中英

如何获取Facebook的个人资料图片?

[英]How to fetch facebook's profile picture?

我正在尝试获取用户的fb个人资料照片,但到目前为止无法完成。 我正在尝试做一些简单的事情:用户使用fb帐户登录,应用程序转到另一个视图,其中显示了他的姓名,电子邮件和个人资料图片。 用户名和电子邮件都可以,但是我无法获取图片!

该应用程序崩溃了我的实际代码,因为显然我正在展开一个nil可选值,但是我不知道为什么它为nil。

我的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.



    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id,email,name,picture.width(480).height(480)"])
    graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in


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

            let id = result.valueForKey("id") as! String

            self.nameLabel.text = userName as String
            self.emailLabel.text = userEmail as String

            self.profilePic.image = self.getProfPic(id)
        }

    })


}

func getProfPic(fid: String) -> UIImage? {
    if (fid != "") {
        let imgURLString = "http://graph.facebook.com/" + fid + "/picture?type=large" //type=normal
        let imgURL = NSURL(string: imgURLString)
        let imageData = NSData(contentsOfURL: imgURL!)
        let image = UIImage(data: imageData!)  // CODE CRASHES IN HERE
        return image
    }
    return nil
}

根据您的评论,我了解到它在图像分配时崩溃,您应该使用Swift的条件绑定方法(如果允许)进行操作,以避免解开nil可选值:

if let data = result["picture"]?["data"]
{
  if let url = data["url"] as? String
  {
    profilePictureURL = url
  }
}

另外,如您所见,我没有使用valueForKey方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM