我现在试图遵循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/3901620initialize 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