Swift. Изображение профиля на Facebook, возвращающее знак вопроса?
Хорошо, поэтому, когда я пытаюсь получить изображение профиля пользователя, оно возвращает белое поле с вопросительным знаком?
Вот мой код:
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)")
Как мне заставить его показать правильную картинку?
1 ответ
Решение
Я предполагаю, что ваша фотография профиля не доступна для общественности. Теперь вы не предоставляете токен доступа вместе с запросом, поэтому запрос обрабатывается как неавторизованный, поэтому вы видите только то, что видит общественный взгляд.
Починить это:
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
}
Это должно делать свое дело.