无法使用 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 - 发送到类的无法识别的选择器