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")
}
}
}
}