无法使用 Parse 搜索新的 facebook auth 用户

Posted

技术标签:

【中文标题】无法使用 Parse 搜索新的 facebook auth 用户【英文标题】:Cant segue new facebook auth user with Parse 【发布时间】:2015-07-25 03:59:40 【问题描述】:

我正在使用 facebook API 和 Parse 的应用程序下注册新用户。正在创建用户而无需转到另一个视图。不幸的是,如果我尝试继续查看下一个视图,则创建的用户没有姓名和电子邮件信息。我知道这在后台运行,所以我需要一个解决方案来知道执行何时完成。有什么想法吗?

override func viewDidLoad() 
    FBSDKProfile.enableUpdatesOnAccessTokenChange(true)


override func viewDidAppear(animated: Bool) 
    if let access = FBSDKAccessToken.currentAccessToken() 
        PFFacebookUtils.logInInBackgroundWithAccessToken(access, block: 
            (user: PFUser?, error: NSError?) -> Void in
            if user != nil 
                println("already registred user")
                self.performSegueWithIdentifier("firstView", sender: self)
             else 
                println("Uh oh. There was an error logging in.")
            
        )
    


@IBAction func fbLoginButtonTouchUpInside (sender: AnyObject) 
    PFFacebookUtils.logInInBackgroundWithReadPermissions(["public_profile", "email", "user_friends"], block:  (user, error) in
        if let user = user 
            User.updateUserInfo()
            println("new user")


            //THIS SEGUE IS CRASHING
            self.performSegueWithIdentifier("newUserSegue", sender: self)

         else 
            println("Uh oh. The user cancelled the Facebook login.")
        
    )

【问题讨论】:

由于你的 segues 在闭包中,它们应该只在任务完成并且结果在闭包中可用后才被调用。我对您的代码注释“//This SEGUE IS CRASHING”感到困惑 - 您收到什么错误消息? 它的连续性。但是使用 segue 它不会保存新的用户数据。没有错误消息。关键是如何知道任务何时完成? 任务在闭包中的代码执行之前完成,这就是闭包如何知道任务是否成功或对象是否不为零的方式。您知道任务已完成,因为您被分配了一个用户 = 用户的常量。您的问题应该是更多关于如何发出 Facebook Graph API 请求以获取人的姓名和电子邮件并使用该信息更新解析用户。 好吧,我想我不是很清楚。 - 没有 Segue:用户被创建并保存到 Parse WITH 电子邮件和名称 - 使用 Segue:用户被保存到 Parse WITHOU 电子邮件和名称。让我这样说:我应该在代码中的哪个位置执行SegueWithIdentifier? 什么是 User.updateUserInfo() ?如果这产生了另一个后台任务,那么您应该向它添加一个完成处理程序并在其中执行 segue。 【参考方案1】:

试试这个。您必须在主线程上执行 AFAK,这就是它崩溃的原因:

dispatch_async(dispatch_get_main_queue()) self.performSegueWithIdentifier("newUserSegue", sender: self)

【讨论】:

【参考方案2】:

这里的问题是我在里面运行另一个后台任务

PFFacebookUtils.logInInBackgroundWithReadPermissions

解决方案是向User.updateUserInfo() 添加一个完成处理程序并在其中执行segue。

【讨论】:

以上是关于无法使用 Parse 搜索新的 facebook auth 用户的主要内容,如果未能解决你的问题,请参考以下文章

PFLogInViewController 错误-使用 Parse 注销后无法登录 Facebook

Parse 和 Facebook 的问题 - 无法识别应用程序

使用 Facebook ID 向特定用户发送 Parse 推送通知无法在 Android 上运行

Parse 和 Facebook SDK - 发送到类的无法识别的选择器

无法使用 Swift 在 Xcode 中使用 Parse 1.7.2 和 Facebook SDK 4.1 创建新用户

使用 Parse 登录 Facebook 不起作用