Facebook 使用 Swift 和 Parse 登录到主 ViewController
Posted
技术标签:
【中文标题】Facebook 使用 Swift 和 Parse 登录到主 ViewController【英文标题】:Facebook Sign In Segue To Main ViewController With Swift and Parse 【发布时间】:2015-10-14 17:41:40 【问题描述】:我正在使用带有自定义 Facebook 登录按钮的 Parse / Swift。加载成功,用户可以登录,但是登录成功后,MainViewController只闪现,然后返回登录页面。
成功登录 Facebook 后,如何让它使用 segue 或转到主视图控制器? Swift 2 的正确代码是什么?
下面是我在我的 Facebook 按钮的 SignInViewController 中的代码:
@IBAction func didTapFacebookConnect(sender: AnyObject)
let permissions = [ "public_profile", "email", "user_friends" ]
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, block:
(user: PFUser?, error: NSError?) -> Void in
self.dismissViewControllerAnimated(true, completion: nil)
if let user = user
if user.isNew
print("User signed up and logged in through Facebook!")
else
print("User logged in through Facebook!")
self.dismissViewControllerAnimated(true, completion: nil)
else
print ("The user cancelled the Facebook; login.")
)
编辑:
现在这是我的新代码,但仍然存在新 ViewController 短暂弹出但随后返回登录页面的相同问题。
这是我收到的错误.. 警告:尝试在 U****d.SignInViewController: 0x7face0d1c310 上呈现 UITabBarController: 0x7face0f619f0>,其视图不在窗口层次结构中!
@IBAction func didTapFacebookConnect(sender: AnyObject)
let permissions = [ "public_profile", "email", "user_friends" ]
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, block:
(user: PFUser?, error: NSError?) -> Void in
self.performSegueWithIdentifier("fbSignIn", sender: self)
if let user = user
if user.isNew
print("User signed up and logged in through Facebook!")
else
print("User logged in through Facebook!")
else
print ("The user cancelled the Facebook; login.")
【问题讨论】:
【参考方案1】:现在,如果用户成功登录,您实际上是在调用两次关闭视图控制器函数。我不确定您的视图控制器的情节提要流程,但这里没有证据表明存在转场。
dismissViewController(true,completion:nil)
但是,如果您在 Storboard 中创建了从登录控制器到应用主屏幕的转场,则在成功注册或登录后,您应该使用适当的标识符调用以下命令。
performSegueWithIdentifier("SEGUEIDENTIFIER",sender:nil)
另外,提示您应该检查 PFUser.currentUser() 以查看是否有缓存的用户实例,这样您就可以立即转到主视图控制器,而无需用户每次都登录。
【讨论】:
添加了这个... performSegueWithIdentifier("goSignIn") 但得到一个错误说...。无法将'String'类型的值转换为预期的参数类型......等等跨度> 我更新了 performSegueWithIdentifier 的参数调用。您必须为您的情况传入 nil 的发件人参数。另外,请确保您创建了一个 segue 并给它一个标识符,否则将引发异常。 我已经用 perform segue 更新了我的代码,但问题仍然存在。新的 ViewController 会短暂弹出,但随后会返回到 SignIn 页面。 这是我不断收到的错误... 警告:尝试在以上是关于Facebook 使用 Swift 和 Parse 登录到主 ViewController的主要内容,如果未能解决你的问题,请参考以下文章
在 Xcode 6.3 (Swift) 中使用 Parse 和 Facebook 框架编译错误
使用 Swift 和 Parse 获取 Facebook UserData 时出现致命错误
在 iOS9 和 Swift2 中使用 Parse 登录 Facebook