Facebook Sign In Segue加载然后返回到Sign In屏幕



所以我使用Parse和Swift创建了一个Sign In/Sign Up函数。成功登录Facebook后,我想要看到的视图控制器会短暂弹出,但随后SignIn视图控制器会回到屏幕上。我希望用户登录并访问应用程序。为什么会这样?

下面是两个视图控制器的代码。我有一个带有segue设置的故事板,如下所示。

fbSignIn - Facebook SignIn Segue

goSignIn - SignIn Page Segue

主视图控制器(Facebook登录后我想去的视图控制器)

class MainViewController: UIViewController {
override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)
    if PFUser.currentUser() != nil {
    } else {
// take user to SignInViewController through a custom segue
self.performSegueWithIdentifier("goSignIn", sender: self)
}
}
@IBAction func logOutUser(sender: UIButton) {
    PFUser.logOut()
    self.performSegueWithIdentifier("goSignIn", sender: self)
}

Sign In视图控制器(Sign In和Facebook Sign In按钮)

  @IBAction func didTapFacebookConnect(sender: AnyObject) {
    let permissions = [ "public_profile", "email", "user_friends" ]
    PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) {
        (user: PFUser?, error: NSError?) -> Void in
        if let user = user {
            if user.isNew {
                print ("User signed up and logged in through Facebook!")
                self.performSegueWithIdentifier("fbSignIn", sender: self)

            } else {
                print ("User logged in through Facebook!")
                self.performSegueWithIdentifier("fbSignIn", sender: self)
            }
        } else {
            print ("Uh oh. The user cancelled the Facebook login.")
            self.performSegueWithIdentifier("fbSignIn", sender: self)
        }

你在主视图控制器的viewDidAppear方法上Segue到你的Facebook登录页面。你所描述的行为表明,PFUser.currentUser()nil,所以self.performSegueWithIdentifier("goSignIn", sender: self)viewDidAppear执行时,你的主视图控制器出现,你立即回到登录页面。

最新更新