【问题标题】:Get Facebook account details using PFFacebookUtils with Swift and iOS 9使用 PFFacebookUtils 和 Swift 和 iOS 9 获取 Facebook 帐户详细信息
【发布时间】:2016-01-11 16:33:01
【问题描述】:

我正在使用 Facebook 实现社交登录。 我使用以下代码记录用户并“检索”与他的帐户相关的信息(我希望),

PFFacebookUtils.logInInBackgroundWithReadPermissions(["public_profile", "email", "user_friends"]) {
  (user: PFUser?, error: NSError?) -> Void in
  if let user = user {
    if user.isNew {
      print("User signed up and logged in through Facebook!")
    } else {
      print("User logged in through Facebook!")
    }
  } 
  print(user)
  else {
    print("Uh oh. The user cancelled the Facebook login.")
  }
}

但控制台输出(和要解析的浏览数据)仅显示一个 ID,没有与此 Facebook 帐户相关联的信息。

我读到要获取用户详细信息,我必须在登录请求后发送 FBSDKGraphRequest。 如果是这样,beetwin 在 Parse 实现中使用登录而不是链接有什么区别(以及优势是什么)?

有没有办法在登录操作后自动导入与“权限”Facebook 帐户相关的信息?

提前谢谢你, 米歇尔

【问题讨论】:

    标签: ios swift facebook parse-platform


    【解决方案1】:

    只需根据您的需要编辑读取权限,我没有使用 PFF,但 FBSDK 为我完成了工作,希望它对您有用

    import UIKit
    import FBSDKCoreKit
    import FBSDKLoginKit
    
    
    class ProfileViewController: UIViewController, FBSDKLoginButtonDelegate {
    
        @IBOutlet weak var nameLabel: UILabel!
        @IBOutlet weak var imageView: UIImageView!
    
        @IBOutlet weak var nextButton: UIButton!
        @IBOutlet weak var fbLoginButton: FBSDKLoginButton!
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.fbLoginButton.delegate = self
            self.fbLoginButton.readPermissions = ["public_profile"]
            self.fbLoginButton.publishPermissions = ["publish_actions"]
            NSNotificationCenter.defaultCenter().addObserver(
                self,
                selector: "fbProfileChanged:",
                name: FBSDKProfileDidChangeNotification,
                object: nil)
            FBSDKProfile.enableUpdatesOnAccessTokenChange(true)
    
            // If we have a current Facebook access token, force the profile change handler
            if ((FBSDKAccessToken.currentAccessToken()) != nil)
            {
                self.fbProfileChanged(self)
            } 
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        override func prefersStatusBarHidden() -> Bool {
            return true
        }
    
    
    
        //facebooks functions
        func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
            if (error != nil)
            {
                print( "\(error.localizedDescription)" )
            }
            else if (result.isCancelled)
            {
                // Logged out?
                print( "Login Cancelled")
            }
            else
            {
                // Logged in?
                print( "Logged in, segue now")
                self.performSegueWithIdentifier("showHome", sender: self)
            }
        }
    
    
    
        func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) {
    
        }
    
    
        //see bitfountain
        func fbProfileChanged(sender: AnyObject!) {
    
            let fbProfile = FBSDKProfile.currentProfile()
            if (fbProfile != nil)
            {
                // Fetch & format the profile picture
                let strProfilePicURL = fbProfile.imagePathForPictureMode(FBSDKProfilePictureMode.Square, size: imageView.frame.size)
                let url = NSURL(string: strProfilePicURL, relativeToURL: NSURL(string: "http://graph.facebook.com/"))
                let imageData = NSData(contentsOfURL: url!)
                let image = UIImage(data: imageData!)
    
                self.nameLabel.text = fbProfile.name
                self.imageView.image = image
    
                self.nameLabel.hidden = false
                self.imageView.hidden = false
                self.nextButton.hidden = false
            }
            else
            {
                self.nameLabel.text = ""
                self.imageView.image = UIImage(named: "")
    
                self.nameLabel.hidden = true
                self.imageView.hidden = true
            }
        }
    
    
    
        @IBAction func nextButtonPressed(sender: UIButton) {
        self.performSegueWithIdentifier("showHome", sender: self)
        }
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 2016-04-17
      相关资源
      最近更新 更多