2015-06-04 2 views
4

Я пытаюсь получить изображение профиля пользователя. Но поскольку Facebook обновляет свой API sdk до версии 4.0 или новее, а также на сайте разработчиков FB, они объясняют в Objective C, но я хочу код в Swift. Я не получаю, как использовать FBSDKProfilePicture в моем коде. Мне нужна помощь, чтобы получить изображение профиля пользователя.как получить изображение профиля из facebook

Я хочу сохранить изображение в своем втором представлении. Пожалуйста, помогите мне с кодом. Вот мой код.

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)") 
    } 
    }) 
} 

}

ответ

12

Если вы можете войти в систему с 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.

+2

я бы предложил использовать 'картину? Ширина = 10000' в URL, так как он будет возвращать гораздо больший размер, чем' тип = large'. –

+0

Зависит от того, что @Pankaj Kumar хочет, я думаю – BHendricks

+0

Какой параметр я должен передать этой функции при вызове ?? Является ли это идентификатором пользователя или именем? @ BHendricks –

0

Чтобы получить изображение нестандартного размера: добавьте параметры ширины и высоты с требуемым размером.

как 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 
} 
Смежные вопросы