Swift:即使从Facebook设置中删除应用程序后,Facebook访问令牌也总是返回的



我正在使用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()
            }
        }

最新更新