简体   繁体   English

Facebook Swift SDK:loginManager表达式类型不明确错误

[英]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.

相关问题 对 LoginManager Facebook sdk swift 的不明确引用 - Ambiguous reference to LoginManager Facebook sdk swift 表达式类型类型错误(Swift 2) - Ambiguous expression type error ( Swift 2 ) Facebook登录管理器“表达式含糊不清”在Swift中出错 - Facebook login manager “expression is ambiguous” error in Swift 表达式的类型在Swift中不明确 - Type of expression is ambiguous in Swift 对于Facebook登录,Swift 3返回“表达式类型不明确而没有更多上下文”错误 - Swift 3 returns “Type of expression is ambiguous without more context” error for facebook login Facebook LoginManager回调/为Segue Swift做准备 - Facebook LoginManager Callback/PrepareforSegue Swift Swift 错误 - 表达式类型不明确,没有更多上下文 - Swift Error - Type of expression is ambiguous without more context xCode 8,swift 3,使用LoginManager登录Facebook SDK必须单击两次才能打开FB登录表单 - xCode 8, swift 3, Facebook SDK login using LoginManager have to click twice to open FB login form Swift 5 - Facebook 登录:LoginManager() 总是返回取消 - Swift 5 - Facebook Login: LoginManager() always return cancelled iOS-Swift Facebook Graph请求完成处理程序-表达式类型不明确,没有更多上下文 - iOS - Swift Facebook Graph Request completion handler - Type of expression is ambiguous without more context
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM