Ios Swift:即使从Facebook设置中删除应用程序,Facebook访问令牌也会始终返回
我正在使用Facebook SDK登录并通过我的应用程序进行升级。当用户从他们的Facebook页面删除应用权限,然后重新打开应用时,我希望它转到第一个视图控制器,该控制器要求用户登录Facebook。但是,我遇到了这样一个问题:即使删除了权限,用户仍然能够访问应用程序 那么,它应该如何工作: i) 用户转到Facebook个人资料并从设置中删除应用权限 ii)用户从iPhone完全关闭我的应用程序 iii)用户重新打开我的应用程序,“登录Facebook”视图控制器应出现 相反,会发生什么: i) 用户转到Facebook个人资料并从设置中删除应用权限 ii)用户从iPhone完全关闭我的应用程序 iii)用户重新打开我的应用程序,我的应用程序将在另一个视图控制器中打开,该视图控制器应仅在用户登录后出现 AppDelegate.swiftIos Swift:即使从Facebook设置中删除应用程序,Facebook访问令牌也会始终返回,ios,swift,facebook,facebook-access-token,Ios,Swift,Facebook,Facebook Access Token,我正在使用Facebook SDK登录并通过我的应用程序进行升级。当用户从他们的Facebook页面删除应用权限,然后重新打开应用时,我希望它转到第一个视图控制器,该控制器要求用户登录Facebook。但是,我遇到了这样一个问题:即使删除了权限,用户仍然能够访问应用程序 那么,它应该如何工作: i) 用户转到Facebook个人资料并从设置中删除应用权限 ii)用户从iPhone完全关闭我的应用程序 iii)用户重新打开我的应用程序,“登录Facebook”视图控制器应出现 相反,会发生什么:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
GMSServices.provideAPIKey("MY_API_KEY")
GMSPlacesClient.provideAPIKey("MY_API_KEY")
// FACEBOOK API STUFF
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
print(FBSDKAccessToken.current())
let storyboard = UIStoryboard(name: "Main", bundle: nil)
self.window = UIWindow(frame: UIScreen.main.bounds)
if(FBSDKAccessToken.current() != nil){
print(FBSDKAccessToken.current())
let initialViewController = storyboard.instantiateViewController(withIdentifier: "main")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
}
else{
print(FBSDKAccessToken.current())
let initialViewController = storyboard.instantiateViewController(withIdentifier: "facebookLogin")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
}
return true
}
您需要手动注销会话
FBSDKLoginManager().logOut()
或
FBSDKAccessToken.current = nil
FBSDKProfile.current = nil
一个解决方案是,每当用户开始使用应用程序时,当您从“使用Facebook登录”中删除应用程序时,您将收到错误消息 “操作无法完成。(com.facebook.sdk.core错误10)。” 因此,您可以注销并让您的用户再次登录
FBSDKAccessToken.refreshCurrentAccessToken { (_, _, error) in
if error != nil {
print(error!.localizedDescription)
try! Auth.auth().signOut()
}
}
从设备中删除应用程序,然后再次检查。尝试了该操作后,它可以工作,但当我返回到我的Facebook帐户并从那里删除应用程序时,我仍然存在相同的问题。是的,这不是问题,但您需要注销您的Facebook会话。请尝试以下操作:[objLoginManager注销];