【问题标题】:how to fetch profile picture from facebook如何从 Facebook 获取个人资料图片
【发布时间】:2015-06-04 20:59:30
【问题描述】:

我正在尝试获取用户的个人资料图片。但是由于 Facebook 已将其 API sdk 更新到 v4.0 或更高版本,并且在 FB 开发人员网站上,他们正在用 Objective C 进行解释,但我想要 Swift 中的代码。我不知道如何在我的代码中使用FBSDKProfilePicture。我需要帮助来获取用户的个人资料照片。

我想将图片存储在我的第二个视图中。请任何人帮我编码。 这是我的代码。

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

let loginManager = FBSDKLoginManager()
let loginView : FBSDKLoginButton = FBSDKLoginButton()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    if (FBSDKAccessToken.currentAccessToken() != nil)
    {
        println("user already logged in")
        loginManager.logOut()
        // User is already logged in, do work such as go to next view controller.
    }

    self.view.addSubview(loginView)
    loginView.center = self.view.center
    loginView.readPermissions = ["public_profile", "email", "user_friends"]
    loginView.delegate = self
    FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "onProfileUpdated:", name:FBSDKProfileDidChangeNotification, object: nil)

}

func returnUserData()
{
    let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
    graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in

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

}

【问题讨论】:

    标签: ios swift user-profile facebook-sdk-4.0


    【解决方案1】:

    如果您能够使用 Facebook 登录,那么您应该拥有该用户的 FB ID。有了它,您可以使用它来获取个人资料图片:

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

    您还可以将type 参数更改为URL 中的不同大小。

    【讨论】:

    • 我建议在 url 中使用 picture?width=10000,因为它会返回比 type=large 更大的大小。
    • 我猜这取决于@Pankaj Kumar 想要什么
    • 调用时我应该传递什么参数给这个函数??是用户 ID 还是名称? @BHendricks
    • 你刚刚登录的用户的facebook ID
    • 添加此函数,获取图像。但是这个函数是在 prepareforsegue 方法之后调用的,所以我在那里得到一个 nil 值。你能说如何解决这个问题吗? @亨德里克斯
    【解决方案2】:

    获取自定义大小的图像:添加宽度和高度参数以及您需要的大小。

    点赞http://graph.facebook.com/[your_fbid]/picture?type=large&redirect=true&width=500&height=500

    func getProfPic(fid: String) -> UIImage? {
        if (fid != "") {
            var imgURLString = "http://graph.facebook.com/" + fid! + "/picture?type=large&redirect=true&width=500&height=500" //replace 500 with your desired size
            var imgURL = NSURL(string: imgURLString)
            var imageData = NSData(contentsOfURL: imgURL!)
            var image = UIImage(data: imageData!)
            return image
        }
        return nil
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多