如何将用户从Facebook登录重定向到主屏幕?

时间:2016-05-20 06:53:48

标签: ios swift facebook facebook-ios-sdk

我的目标非常简单,在用户登录后重定向或导航到主屏幕。

我使用Facebook IOS SDK创建登录按钮

http://jsfiddle.net/kjoLyf9d/

用户登录后,按钮将更改为退出,我的目标是将用户重定向到主屏幕

enter image description here

我写了一些代码,它有一些API调用来保存应用程序从Facebook IOS SDK收到的数据(等等电子邮件,名字,姓氏......)

  func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
        print("Login")

        // if token exist , check the database whether the user's facebook id exist or not
        if let _ = FBSDKAccessToken.currentAccessToken() {
            fetchFacebookProfile() // this function simply store the data from facebook to the database, nothing fancy
        }


    }

我真正的问题是如何在用户登录Facebook后将用户重定向到新屏幕?

1 个答案:

答案 0 :(得分:0)

我确定有很多方法可以回答这个问题,这里有一个:

在AppDelegate.swift中添加以下代码

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    //1
    Data.ref.observeAuthEventWithBlock { (authData) -> Void in
      //2
      if authData == nil {
        let mainStoryBoard = UIStoryboard(name: "Main", bundle: nil)
        let ViewController = mainStoryBoard.instantiateViewControllerWithIdentifier("LoginScene") as! LoginVC
        let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        appDelegate.window?.rootViewController = ViewController
      }
    }
    return true
  }
  1. Data.ref只是对用户拥有其令牌
  2. 的数据库的引用
  3. authData是一个Boolean,用于指示用户是否已登录,我们使用观察块来监控authData
  4. 中的更改

    在您的故事板中,您希望storyboard entry point指向main screen,如果用户未登录,AppDelegate会将用户引导至login screen 。这样,每次使用应用程序时,已登录的用户无需通过登录屏幕。

    Screen Shot of how the storyboard should look like in this case