5

我使用 Cocoapods 安装了 FacebookSDK,根据终端,我已经安装了 FacebookSDK 4.8.0(CoreKit、ShareKit 和 LoginKit),我.hBH-File.h我的 .

出于某种原因,当我尝试使用自定义按钮登录时,当我初始化时FBLoginManager,我得到一个错误Use of undeclared type "FBLoginManager"

这是我的代码

if (FBSDKAccessToken.currentAccessToken() == nil)
    {
        let fbLoginManager : FBSDKLoginManager =
        fbLoginManager.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: { (loginResult, error) -> Void in
            if error == nil {
                print (FBSDKAccessToken.currentAccessToken().tokenString)
            }
            else {
                print ("ERROR*****: \(error)")
            }
        })
    }
4

2 回答 2

13

对我来说固定的是添加import FBSDKCoreKitFBSDKLoginKit我的班级,由于某种原因,将它添加到BH-file.h

于 2016-01-11T18:45:04.150 回答
1

尝试这样的事情,我刚刚检查了代码并且它可以工作(它不完全是你想要的,但我相信你可以根据需要修改它)

    import UIKit
import FBSDKCoreKit
import FBSDKLoginKit


class ProfileViewController: UIViewController,FBSDKLoginButtonDelegate {

   // @IBOutlet weak var nameLabel: UILabel!
    @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)
    }


}
于 2016-01-11T17:38:57.840 回答