[英]Facebook Swift SDK: loginManager Type of expression is ambiguous error
I'm using the following code to add a facebook login to a UIButton action: 我正在使用以下代码将Facebook登录添加到UIButton操作:
func facebookButtonClicked(sender: UIButton) {
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")
}
}
}
Xcode is throwing the following error: Xcode抛出以下错误:
Type of expression is ambiguous without more context
for the [.PublicProfile]
part. 对于
[.PublicProfile]
部分。
Any ideas what I'm doing wrong here? 我在这里做错了什么想法?
The final solution is this one: 最终解决方案是这样的:
let loginManager=LoginManager()
loginManager.logIn(readPermissions: [ReadPermission.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")
}
}
Facebook hasn't updated its own codes' examples... Facebook尚未更新自己的代码示例......
Try this for latest SDK 试试这个最新的SDK
func facebookButtonClicked(sender: UIButton) {
let loginManager = LoginManager()
loginManager.logIn(readPermissions: [.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")
}
}
}
你应该在第一个参数之前添加readPermissons:
loginManager.logIn(readPermissions: [ .publicProfile], ...
i recently resolved this error. 我最近解决了这个错误。
replace .publicProfile with ReadPermission.publicProfile 用ReadPermission.publicProfile替换.publicProfile
this should fix the problem. 这应该解决问题。
So I somewhat fixed this issue by using the proper facebook syntax since the recent update. 所以我在最近的更新中使用正确的facebook语法解决了这个问题。
@IBAction func facebookBtnTapped(_ sender: AnyObject) {
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!")
}
}
}
changing 改变
viewController: self
to 至
viewController: nil
solved this issue for me 为我解决了这个问题
@objc func loginButtonClicked(sender : UIButton) {
let loginManager = LoginManager()
loginManager.logIn(readPermissions: [.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")
}
}
}
In Swift 4.2 and Xcode 10.1 在Swift 4.2和Xcode 10.1中
If you want more permissions use this code. 如果您想要更多权限,请使用此代码。
@IBAction func onClickFBSign(_ sender: UIButton) {
let loginManager=LoginManager()
//Here in this line you need to mention permissions like .email, .userFriends, .userBirthday etc..
loginManager.logIn(readPermissions: [ReadPermission.publicProfile, .email, .userFriends, .userBirthday], 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 : \(grantedPermissions), \(declinedPermissions), \(accessToken)")
}
}
}
https://developers.facebook.com/docs/swift/login https://developers.facebook.com/docs/swift/login
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.