iOS:如何检查用户是否已经使用 Facebook 登录?

14

我已经开始使用Swift和Storyboards在Xcode上开发iOS应用程序。我有一个需求,即在点击按钮时,如果用户使用Facebook登录,则在屏幕上显示用户的Facebook个人资料,但如果他没有登录,则会自动跳转到登录页面,在成功登录后再次显示个人资料页面。

我该如何做到这一点?

4个回答

22

2
他们要求使用Swift,这将是FBSDKAccessToken.currentAccessToken() - Marcus Adams
谢谢这个信息。然而,我还有另一个疑问,那就是现在当再次启动应用程序时,如何跳过登录页面直接进入个人资料页面。我相信这与安全有关,但我有点困惑。 - hutututu
你需要在你的AppDelegate中调用那个函数,并根据它选择要去哪个ViewController。 - chedabob
好的,那么如果我在使用Storyboard来构建我的应用程序,从AppDelegate设置视图控制器的方法是否仍然适用? - hutututu
是的,但与其让应用程序使用Info.plist中指定的Storyboard,您必须自己实例化它。请参见此答案以获取示例:https://dev59.com/E18d5IYBdhLWcg3wgiX4#26757245如果您尚未这样做,您将不得不为您的ViewControllers提供标识符:https://dev59.com/Emsy5IYBdhLWcg3w-zB4#8186721 - chedabob
显示剩余2条评论

6
使用最新的Facebook SDK,您可以像这样检查:
if FBSDKAccessToken.current() != nil {
    // logged in
}
else {
    // not logged in 
}

他们最近从FBSDKAccessToken.currentAccessToken()更改为FBSDKAccessToken.current()


它应该不起作用。 因为 FBSDKAccessToken.current() 返回非空值。 检查返回类型。它是 FBSDKAccessToken!,这保证了它永远不会为空。 我不知道它是如何工作的,但它确实在工作。 - Aaban Tariq Murtaza
我认为以下应该是代码...if([FBSDKAccessToken currentAccessToken] != nil){ // 已登录 }else{ // 未登录 } - Chirag Purohit

3

在Swift 5的SDK中,请使用以下代码:

import FBSDKCoreKit

if AccessToken.isCurrentAccessTokenActive {
    print("your session is active")
}

0

为了更方便和标准的Swift代码,您可以使用以下代码片段。顺便说一下,我正在使用Swift 2.2和Xcode 7.3.1。

if let loggedInUsingFBTokenCheck = FBSDKAccessToken.currentAccessToken(){
     //User is already logged-in. Please do your additional code/task.
}else{
    //User is not logged-in. Allow the user for login using FB.
}

如果您想在应用程序启动时基于登录检查加载特定的视图控制器,您可以将此代码放置在项目的AppDelegate中,并在内部进行检查 -

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//Check here for login
}

谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接