所以我使用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
执行时,你的主视图控制器出现,你立即回到登录页面。