ios - Swift:即使从 Facebook 设置中删除应用程序后,Facebook 访问 token 也始终返回

标签 ios swift facebook facebook-access-token

我正在使用 Facebook SDK 登录并通过我的应用程序进行操作。当用户从他们的 Facebook 页面删除应用程序权限然后重新打开应用程序时,我希望它转到第一个 View Controller ,它要求用户登录 Facebook。但是,我遇到了即使在删除权限后用户仍然能够访问该应用程序的问题。

那么,它应该如何工作:

i) 用户转到 Facebook 个人资料并从设置中删除应用权限

ii) 用户从 iPhone 上完全关闭了我的应用。

iii) 用户重新打开我的应用程序,应该会出现“登录 Facebook” View Controller 。

相反,会发生什么:

i) 用户转到 Facebook 个人资料并从设置中删除应用权限

ii) 用户从 iPhone 上完全关闭了我的应用。

iii) 用户重新打开我的应用程序,我的应用程序在另一个 View Controller 中打开,该 View Controller 只应在用户登录后出现。

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
}

最佳答案

您需要手动注销您的 session

FBSDKLoginManager().logOut() 

FBSDKAccessToken.current = nil
FBSDKProfile.current = nil

关于ios - Swift:即使从 Facebook 设置中删除应用程序后,Facebook 访问 token 也始终返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44320123/

相关文章:

ios - 未在 viewController 中执行 Segue

android - Facebook Android sdk 游戏请求对话框显示 "Game Requests are only available to games"

ios - 在没有插入闪电电缆的情况下,如何在真实的 iOS 设备上查看实时控制台日志?

ios - AVPlayer 边界时间观察器偶尔无法触发

swift - 快速覆盖方法

ios - 如何在 swift 4 的 didSelectItemAt IndexPath 中的数组中嵌入字典类型数据?

Java将系统的当前日期时间转换为纪元引用的秒数

facebook - 如何续订过期的 Facebook 访问 token ?

android - iOS 通知本地化失败,使用 FCM(Firebase 云消息传递)

ios - parent 和 child 调用键盘通知查看两者