Swift 3 facebook login



我现在试图遵循facebook的完整指南,但我一直得到一个错误,当我试图建立。

我得到的错误是type of expression is ambigous without more context在这行LoginManager.logIn([.PublicProfile], viewController: self) { loginResult in

我从放入pod

开始
pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'

,然后运行pod install

之后我将它导入到我的viewController

import FacebookCore
import FacebookLogin 

我已经添加了一个UIButton到viewDidLoad

let myLoginButton = UIButton(type: .custom)
myLoginButton.backgroundColor = UIColor.darkGray
myLoginButton.frame = CGRect(x: 0, y: 0, width: 180, height: 40);
myLoginButton.center = view.center;
myLoginButton.setTitle("My Login Button", for: .normal)

然后我添加了以下功能到viewController

@objc func loginButtonClicked() {
    let loginManager = LoginManager()
    LoginManager.logIn([.PublicProfile], viewController: self) { loginResult in
        switch loginResult {
        case .Failed(let error):
            print(error)
        case .Cancelled:
            print("User cancelled login.")
        case .Success(let grantedPermissions, let declinedPermissions, let accessToken):
            print("Logged in!")
        }
    }
}

请尝试一下,它在Objective c中工作良好。

https://stackoverflow.com/a/40089906/3901620

initialize in ViewDidLoad

let loginManager = LoginManager()

在按钮点击事件上使用这个实例

func loginButtonClicked() {
    loginManager.logIn([.PublicProfile], viewController: self) { loginResult in
        switch loginResult {
        case .Failed(let error):
            print(error)
        case .Cancelled:
            print("User cancelled login.")
        case .Success(let grantedPermissions, let declinedPermissions, let accessToken):
            print("Logged in!")
        }
    }
}

您没有使用创建的实例变量来调用"logIn"方法。相反,您试图在LoginManager类上调用"logIn"。

代替

let loginManager = LoginManager()
LoginManager.logIn([.PublicProfile], viewController: self) { loginResult in

let loginManager = LoginManager()
loginManager.logIn([.PublicProfile], viewController: self) { loginResult in

最新更新