我正在使用Facebook SDK登录和通过我的应用程序进行进展。当用户从其Facebook页面中删除应用程序权限然后重新打开应用程序时,我希望它转到第一个视图控制器,该控制器要求用户登录Facebook。但是,我遇到了一个问题,即使删除了权限后,用户仍然能够访问该应用程序。
因此,它应该如何工作:
i(用户转到Facebook个人资料并从设置中删除应用程序权限
ii(用户完全从iPhone关闭了我的应用程序。
iii(用户应重新打开我的应用程序和"登录到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
}
您需要手动注销会话
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()
}
}