Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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:

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:

Type of expression is ambiguous without more context

for the [.PublicProfile] part.

Any ideas what I'm doing wrong here?

like image 470
Marcel Avatar asked Sep 26 '16 22:09

Marcel


4 Answers

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...

like image 195
Lorenzo N. Avatar answered Oct 21 '22 12:10

Lorenzo N.


Try this for latest 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")
        }
    }
}
like image 21
YinKiet Avatar answered Oct 21 '22 14:10

YinKiet


You should add readPermissons: before the first parameter:

loginManager.logIn(readPermissions: [ .publicProfile], ...
like image 8
Saeed Ir Avatar answered Oct 21 '22 12:10

Saeed Ir


i recently resolved this error.

replace .publicProfile with ReadPermission.publicProfile

this should fix the problem.

like image 2
Jamie McAllister Avatar answered Oct 21 '22 12:10

Jamie McAllister