gpt4 book ai didi

ios - 如何从 Facebook + Swift + Parse 获取封面照片

转载 作者:行者123 更新时间:2023-11-28 11:13:42 25 4
gpt4 key购买 nike

我的应用程序 swift 2.0 中有一个与 Facebook 集成的登录系统,我能够获取一些用户信息和个人资料图片。

我想知道如何从登录的用户那里获取封面图片:

let requestParameters = ["fields": "id, email, first_name, last_name, name, gender, cover"]

let userDetails = FBSDKGraphRequest(graphPath: "me", parameters: requestParameters)

userDetails.startWithCompletionHandler { (connection, result, error:NSError!) -> Void in

if(error != nil)
{
print("\(error.localizedDescription)")
return
}

if(result != nil)
{

let userId:String = result["id"] as! String
let userFirstName:String? = result["first_name"] as? String
let userLastName:String? = result["last_name"] as? String
let userEmail:String? = result["email"] as? String
let userName:String? = result["name"] as? String
let userGender:String? = result["gender"] as? String
let userCover:UIImage? = result["cover"] as? UIImage

print(requestParameters)
print(userDetails)
print(userCover)
print("\(userEmail)")

let myUser:PFUser = PFUser.currentUser()!

// Save first name
if(userFirstName != nil)
{
myUser.setObject(userFirstName!, forKey: "firstNameColumn")

}

//Save last name
if(userLastName != nil)
{
myUser.setObject(userLastName!, forKey: "lastNameColumn")
}

// Save email address
if(userEmail != nil)
{
myUser.setObject(userEmail!, forKey: "email")
}

// Save email address
if(userGender != nil)
{
if (userGender == "male"){
myUser.setObject("Masculino", forKey: "genderColumn")
} else {
myUser.setObject("Feminino", forKey: "genderColumn")
}
}





dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {

// Get Facebook profile picture
let userProfile = "https://graph.facebook.com/" + userId + "/picture?type=large"

let profilePictureUrl = NSURL(string: userProfile)

let profilePictureData = NSData(contentsOfURL: profilePictureUrl!)

if(profilePictureData != nil)
{
let profileFileObject = PFFile(data:profilePictureData!)
myUser.setObject(profileFileObject!, forKey: "photoUserColumn")
}


myUser.saveInBackgroundWithBlock({ (success:Bool, error:NSError?) -> Void in

if(success)
{
print("User details are now updated")
}

})



}

此代码不适用于封面图片。

有什么想法吗?

最佳答案

这是一个在 swift 中使用 fb sdk 的工作示例。我也在另一个问题中发布了这个答案,但是因为这个答案首先出现在我的谷歌上,所以我认为把它也放在这里会很好。

我需要获取页面的封面照片,因此在 graphPath 中我使用了页面 ID。这个参数可以很容易地改变以适应用户/事件/等等...

let request = FBSDKGraphRequest(graphPath: "\\(page.id)?fields=cover", parameters: [
"access_token": "your_access_token"
], HTTPMethod: "GET")
request.startWithCompletionHandler({(connection , result , error) in
if ((error) != nil) {
print("Error in fetching cover photo for \\(page.id): \(error)", terminator: "")
}
else {
if let data = result["cover"] as? NSDictionary {
self.fetchImageFromUrl(data["source"] as! String, cb: {(image: UIImage) -> Void in
//do something with image
})
}
})

func fetchImageFromUrl(url: String, cb: (UIImage) -> Void) {
let urlObj = NSURL(string: url)!
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
let data = NSData(contentsOfURL: urlObj)
dispatch_async(dispatch_get_main_queue(), {
let image = UIImage(data: data!)!
cb(image)
});
}
}

P.S - 我是 swift/ios 的新手,所以这段代码可能不是最好的。评论将不胜感激。

关于ios - 如何从 Facebook + Swift + Parse 获取封面照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33283581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com