Swift。 Facebook 个人资料图片返回问号?
Swift. Facebook profile picture returning a question mark?
好的,当我尝试接收用户个人资料图片时,图片 returns 是一个带有问号的白框?
这是我的代码:
func getProfilePic(fid: String) -> SKTexture? {
let imgURL = NSURL(string: "http://graph.facebook.com/" + fid + "/picture?type=large")
let imageData = NSData(contentsOfURL: imgURL!)
let imageUI = UIImage(data: imageData!)
let image = SKTexture(image: imageUI!)
return image
}
func getFBUserData() {
if((FBSDKAccessToken.currentAccessToken()) != nil) {
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email, picture"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
print(result)
if let userData = result as? NSDictionary {
personalUserID = userData["id"] as! String
}
} else {
print("error")
}
})
}
picture.texture = getProfilePic("\(personalUserID)")
如何让它显示正确的图片?
我猜你的个人资料照片不适用于 public。现在您没有为请求提供访问令牌,因此请求被处理为未经授权 - 因此您只能看到 public 眼睛所见。
修复它:
func getProfilePic(fid: String) -> SKTexture? {
let imgURL = NSURL(string: "http://graph.facebook.com/" + fid + "/picture?type=large&access_token=" + FBSDKAccessToken.currentAccessToken().tokenString)
let imageData = NSData(contentsOfURL: imgURL!)
let imageUI = UIImage(data: imageData!)
let image = SKTexture(image: imageUI!)
return image
}
此外,您需要使用 https
和当前 API 版本 v2.5
来发出请求,否则您的代码可能会在 Facebook 进行更改时随时中断。所以,考虑到这一点:
func getProfilePic(fid: String) -> SKTexture? {
let imgURL = NSURL(string: "https://graph.facebook.com/v2.5/" + fid + "/picture?type=large&access_token=" + FBSDKAccessToken.currentAccessToken().tokenString)
let imageData = NSData(contentsOfURL: imgURL!)
let imageUI = UIImage(data: imageData!)
let image = SKTexture(image: imageUI!)
return image
}
这应该可以解决问题。
好的,当我尝试接收用户个人资料图片时,图片 returns 是一个带有问号的白框?
这是我的代码:
func getProfilePic(fid: String) -> SKTexture? {
let imgURL = NSURL(string: "http://graph.facebook.com/" + fid + "/picture?type=large")
let imageData = NSData(contentsOfURL: imgURL!)
let imageUI = UIImage(data: imageData!)
let image = SKTexture(image: imageUI!)
return image
}
func getFBUserData() {
if((FBSDKAccessToken.currentAccessToken()) != nil) {
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email, picture"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
print(result)
if let userData = result as? NSDictionary {
personalUserID = userData["id"] as! String
}
} else {
print("error")
}
})
}
picture.texture = getProfilePic("\(personalUserID)")
如何让它显示正确的图片?
我猜你的个人资料照片不适用于 public。现在您没有为请求提供访问令牌,因此请求被处理为未经授权 - 因此您只能看到 public 眼睛所见。
修复它:
func getProfilePic(fid: String) -> SKTexture? {
let imgURL = NSURL(string: "http://graph.facebook.com/" + fid + "/picture?type=large&access_token=" + FBSDKAccessToken.currentAccessToken().tokenString)
let imageData = NSData(contentsOfURL: imgURL!)
let imageUI = UIImage(data: imageData!)
let image = SKTexture(image: imageUI!)
return image
}
此外,您需要使用 https
和当前 API 版本 v2.5
来发出请求,否则您的代码可能会在 Facebook 进行更改时随时中断。所以,考虑到这一点:
func getProfilePic(fid: String) -> SKTexture? {
let imgURL = NSURL(string: "https://graph.facebook.com/v2.5/" + fid + "/picture?type=large&access_token=" + FBSDKAccessToken.currentAccessToken().tokenString)
let imageData = NSData(contentsOfURL: imgURL!)
let imageUI = UIImage(data: imageData!)
let image = SKTexture(image: imageUI!)
return image
}
这应该可以解决问题。