Я пытаюсь извлечь профиль fb профиля пользователя, но не смог сделать это. Я пытаюсь сделать что-то просто: пользователь входит в систему с учетной записью fb, и приложение переходит в другое представление, где появляется его имя, адрес электронной почты и изображение профиля. Имя пользователя и адрес электронной почты в порядке, но я не могу получить изображение!Как получить изображение профиля facebook?
Приложение разбивается с моим фактическим кодом, потому что, по-видимому, я разворачиваю нулевое значение, но я не знаю, почему это нуль.
Мой код:
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
}
Очевидно, что 'imageData' является' nil', что означает неправильный URL. Почему бы не использовать метод NSData, который генерирует исключение, чтобы вы могли понять, почему он терпит неудачу. – rmaddy
В Xcode в навигаторе проекта нажмите кнопку «Показать навигатор точки останова». Затем щелкните знак плюса в нижнем левом углу экрана. Нажмите «Добавить точку останова исключения». Это должно добавить точку останова при возникновении исключения. Затем вы можете ввести 'po' и посмотреть, есть ли адрес/значение памяти, связанное с ним. Это должно дать вам некоторое направление: где искать. –
Adrian
В getProfPic func: let image = UIImage (data: imageData!) // CODE CRASHES IN ЗДЕСЬ Я сделал, но большая часть кода, который я нашел, был в obj-c и только несколько в swift. Это был один из примеров, который я нашел в аналогичном вопросе здесь, в stackoverflow. –