[英]Facebook profile picture doesn't show up Swift
我正在嘗試使用Facebook個人資料圖片和用戶名在Swift中創建個人資料。 我設法將它們放在登錄按鈕所在的ViewController上,但是它們沒有顯示在我需要它們的Profile ViewController中。 這是我使用的代碼:
對於登錄頁面:
import UIKit
class ViewController: UIViewController, FBSDKLoginButtonDelegate
{
@IBOutlet var btnFacebook: FBSDKLoginButton!
@IBOutlet var ivUserProfileImage: UIImageView!
@IBOutlet var lblName: UILabel!
override func viewDidLoad()
{
super.viewDidLoad()
configureFacebook()
}
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in
let strFirstName: String = (result.objectForKey("first_name") as? String)!
let strLastName: String = (result.objectForKey("last_name") as? String)!
let strPictureURL: String = (result.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as? String)!
self.lblName.text = "Welcome, \(strFirstName) \(strLastName)"
self.ivUserProfileImage.image = UIImage(data: NSData(contentsOfURL: NSURL(string: strPictureURL)!)!)
}
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!)
{
let loginManager: FBSDKLoginManager = FBSDKLoginManager()
loginManager.logOut()
ivUserProfileImage.image = nil
lblName.text = ""
}
func configureFacebook()
{
btnFacebook.readPermissions = ["public_profile", "email", "user_friends"];
btnFacebook.delegate = self
}
}
這是Profile ViewController的代碼:
import UIKit
class Profile: UIViewController {
@IBOutlet weak var profilePicture: UIImageView!
@IBOutlet weak var userName: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in
let strFirstName: String = (result.objectForKey("first_name") as? String)!
let strLastName: String = (result.objectForKey("last_name") as? String)!
let strPictureURL: String = (result.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as? String)!
self.userName.text = "Welcome, \(strFirstName) \(strLastName)"
self.profilePicture.image = UIImage(data: NSData(contentsOfURL: NSURL(string: strPictureURL)!)!)
}
}
}
}
我想我缺少第一個VC和Profile VC之間的鏈接,但不確定。
在此先感謝您的幫助。
import UIKit
class ViewController: UIViewController, FBSDKLoginButtonDelegate {
@IBOutlet var btnFacebook: FBSDKLoginButton!
@IBOutlet var ivUserProfileImage: UIImageView!
@IBOutlet var lblName: UILabel!
var object: AnyObject!
override func viewDidLoad() {
super.viewDidLoad()
configureFacebook()
}
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!)
{
FBSDKGraphRequest.init(graphPath: "me", parameters: ["fields":"first_name, last_name, picture.type(large)"]).startWithCompletionHandler { (connection, result, error) -> Void in
self.object = result
self.performSegueWithIdentifier("YourSegueID", sender: self)
}
func loginButtonDidLogOut(loginButton: FBSDKLoginButton!)
{
let loginManager: FBSDKLoginManager = FBSDKLoginManager()
loginManager.logOut()
ivUserProfileImage.image = nil
lblName.text = ""
}
func configureFacebook()
{
btnFacebook.readPermissions = ["public_profile", "email", "user_friends"];
btnFacebook.delegate = self
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "YourSegueID" {
let dvc = segue.destinationViewController as? ViewController2
dvc!.object = object // sending facebook data from VC to ProfileVC
}
}
}
在ProfileVC中
import UIKit
class Profile: UIViewController {
@IBOutlet weak var profilePicture: UIImageView!
@IBOutlet weak var userName: UILabel!
var object: AnyObject!
override func viewDidLoad() {
super.viewDidLoad()
print(object)// your facebook object
print(object.objectForKey("first_name")as! String)
print(object.objectForKey("id") as! String)
print(object.objectForKey("last_name")as! String)
let image = object.objectForKey("picture") as! NSObject
let data = image.valueForKey("data") as! NSObject
let ProfilepicUrl = data.valueForKey("url") as! String
print(ProfilepicUrl)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.