IOS Facebook SDK 4.01:我应该使用 FBSDKAccessToken.currentAccessToken() 检查用户是否登录吗?

IOS Facebook SDK 4.01: Should I be using FBSDKAccessToken.currentAccessToken() to check if user is logged in?

我开始尝试熟悉 FB 最新的 IOS SDK (4.0.1)。我已将其集成到 IOS8 Swift 项目中,并使用 FBSDKLoginButton 使用户登录和注销。如果用户已经登录,我希望应用程序跳过显示登录视图控制器。

我应该只检查 FBSDKAccessToken currentAccessToken() 的 return 结果吗?如果用户未登录,这是否 return 'nil'?文档对这种方法有以下说法:

You can load this with the SDK from a keychain cache or from an app bookmark when your app cold launches. You should check its availability in your view controller's viewDidLoad.

类似于:

// LoginViewController.swift     
override func viewDidLoad() {
        super.viewDidLoad()
        if(FBSDKAccessToken.currentAccessToken()){
            //They are logged in so show another view
        }else{
            //They need to log in
        }
    }

所以这听起来像 可能 是我正在寻找的东西,但我不能从这个描述中真正分辨出来。 SO 的好人是如何处理这个常见用例的? :)

-尼克

是的,FBSDKAccessToken.currentAccessToken() 是您应该检查的内容,尽管您拥有的代码将不起作用,因为这不是 return 布尔值。你需要这样的东西:

    if(FBSDKAccessToken.currentAccessToken() != nil) {
        //They are logged in so show another view
    } else {
        //They need to log in
    }

此外,这仅适用于应用程序在 foreground/background 之间移动时(用户点击主页按钮)。如果应用程序被终止并冷启动,令牌将丢失,除非您在 AppDelegate 的 didFinishlaunchingWithOptions 中实现以下内容:

return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)

您无需担心钥匙串,因为只要您实现了必要的部分,系统就会自动为您处理。

以下网站有一个很好的教程,可以让一个简单的例子工作:http://www.brianjcoleman.com/tutorial-how-to-use-login-in-facebook-sdk-4-0-for-swift/