Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:Facebook SDK,在成功登录后检查缺少的权限_Ios_Iphone_Facebook_Swift - Fatal编程技术网

Ios Swift:Facebook SDK,在成功登录后检查缺少的权限

Ios Swift:Facebook SDK,在成功登录后检查缺少的权限,ios,iphone,facebook,swift,Ios,Iphone,Facebook,Swift,我正在尝试在用户成功登录应用程序后检查缺少的权限 func checkUserPermission() { let loginResult: FBSDKLoginManagerLoginResult = FBSDKLoginManagerLoginResult() var missingPermissions: [String] = [] if !loginResult.grantedPermissions.containsObject("

我正在尝试在用户成功登录应用程序后检查缺少的权限

func checkUserPermission()
    {
        let loginResult: FBSDKLoginManagerLoginResult = FBSDKLoginManagerLoginResult()
        var missingPermissions: [String] = []
        if !loginResult.grantedPermissions.containsObject("public_profile")
        {
            missingPermissions.append("public_profile")
        }
        if !loginResult.grantedPermissions.containsObject("email")
        {
            missingPermissions.append("email")
        }
        if !loginResult.grantedPermissions.containsObject("user_friends")
        {
            missingPermissions.append("user_friends")
        }
        if !loginResult.grantedPermissions.containsObject("user_likes")
        {
            missingPermissions.append("user_likes")
        }

        println(missingPermissions)

    }
此功能在应用程序状态更改时运行,以确保我拥有使应用程序正常运行所需的所有权限


我目前收到此错误“致命错误:在展开可选值时意外发现零”,但我似乎无法理解原因。如果设置了“FBSDKAccessToken.currentAccessToken()”,则理论上也应设置权限

发现问题,我假设
让loginResult:FBSDKLoginManagerLoginResult=FBSDKLoginManagerLoginResult()
将存储授予的权限,但要获得当前登录用户的活动权限,您必须依赖
FBSDKAccessToken
。因此,将
loginResult
替换为

let loginResult:FBSDKAccessToken=FBSDKAccessToken.currentAccessToken()

应该解决这个问题。另外,
授予的权限
将更改为
权限
。以下是工作功能:

func checkUserPermission()
    {

        let loginResult: FBSDKAccessToken = FBSDKAccessToken.currentAccessToken()


        var missingPermissions: [String] = []
        if !loginResult.permissions.containsObject("public_profile")
        {
            missingPermissions.append("public_profile")
        }
        if !loginResult.permissions.containsObject("email")
        {
            missingPermissions.append("email")
        }
        if !loginResult.permissions.containsObject("user_friends")
        {
            missingPermissions.append("user_friends")
        }
        if !loginResult.permissions.containsObject("user_likes")
        {
            missingPermissions.append("user_likes")
        }

        println(missingPermissions)

        //let login: FBSDKLoginManager = FBSDKLoginManager()
        //login.logInWithReadPermissions([""], handler: <#FBSDKLoginManagerRequestTokenHandler!##(FBSDKLoginManagerLoginResult!, NSError!) -> Void#>)
        //login.loginw
    }
func checkUserPermission()
{
让loginResult:FBSDKAccessToken=FBSDKAccessToken.currentAccessToken()
var missingPermissions:[字符串]=[]
if!loginResult.permissions.containsObject(“公共配置文件”)
{
missingPermissions.append(“public_profile”)
}
if!loginResult.permissions.containsObject(“电子邮件”)
{
missingPermissions.append(“电子邮件”)
}
if!loginResult.permissions.containsObject(“用户朋友”)
{
missingPermissions.append(“用户\朋友”)
}
if!loginResult.permissions.containsObject(“用户喜欢”)
{
missingPermissions.append(“用户喜欢”)
}
println(缺少权限)
//让登录名:FBSDKLoginManager=FBSDKLoginManager()
//login.logInWithReadPermissions([“”],处理程序:Void#>)
//login.loginw
}
使用Facebook SDK for Swift的(当前)0.2.0版,它可以:

func loginButtonClicked() {
    let loginManager = LoginManager()
    loginManager.logIn([ .publicProfile, .email ], 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!")
            // Check for access to email address
            if declinedPermissions.contains(FacebookCore.Permission.init(name: "email")) {
                print("Email access declined")
            }
        }
    }
}