FBLoginManager 未声明的类型

FBLoginManager undeclared type

我使用 Cocoapods 安装了 FacebookSDK,根据终端,我已经安装了 FacebookSDK 4.8.0(CoreKit、ShareKit 和 LoginKit),我在 BH-File.h 中导入了 .h 文件,并且已经初始化我的 AppDelegate 中的所有内容。

出于某种原因,在尝试使用自定义按钮登录时,当我初始化 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)")
            }
        })
    }

试试这样的方法,我刚刚检查了代码并且它有效(这不是您要找的,但我相信您可以根据需要修改它)

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


}

对我来说固定的是将 import FBSDKCoreKitFBSDKLoginKit 添加到我的 class,由于某些原因在 BH-file.h

中添加它还不够