我使用Facebook SDK登录并浏览我的应用程序。当用户从其Facebook页面删除应用程序权限然后重新打开应用程序时,我希望它转到第一个视图控制器,该控制器要求用户登录Facebook。但是,我遇到了用户即使在删除权限后仍然可以访问应用程序的问题。
那么,它应该如何运作:
i)用户访问Facebook个人资料并从设置中删除应用权限
ii)用户从iPhone完全关闭我的应用程序。
iii)用户重新打开我的应用程序和#34;登录Facebook"应该出现视图控制器。
相反,会发生什么:
i)用户访问Facebook个人资料并从设置中删除应用权限
ii)用户从iPhone完全关闭我的应用程序。
iii)用户重新打开我的应用程序,我的应用程序在另一个视图控制器中打开,只有在用户登录后才会出现。AppDelegate.swift
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
}
答案 0 :(得分:2)
您需要手动注销会话
FBSDKLoginManager().logOut()
或强>
FBSDKAccessToken.current = nil
FBSDKProfile.current = nil
答案 1 :(得分:0)
解决方案是每次用户在从#34登录时开始使用应用程序时刷新令牌;使用Facebook"你会收到错误 "操作无法完成。 (com.facebook.sdk.core错误10。)" 这样您就可以退出并让您的用户再次登录
FBSDKAccessToken.refreshCurrentAccessToken { (_, _, error) in
if error != nil {
print(error!.localizedDescription)
try! Auth.auth().signOut()
}
}