解析:新 Facebook 用户注册时不创建会话
Posted
技术标签:
【中文标题】解析:新 Facebook 用户注册时不创建会话【英文标题】:Parse: No Session is created when new Facebook user signs up 【发布时间】:2016-08-29 21:23:30 【问题描述】:我在用 Swift 编写的 iPhone 应用中使用 PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions)
进行 Facebook 注册/登录。
更新:
当新用户通过标准电子邮件注册进行注册时,会像往常一样在 Parse Session 类中创建一个 Session 对象。但是,当新用户第一次通过 Facebook 注册时,会创建一个 Session 对象,然后在 Parse Session 类中立即删除(在调用 saveInBackground
之后 - 请参阅下面的评论)。如果该新用户注销然后再次登录,则最终由于某种原因创建了 Session 对象。
这里有什么问题/我如何在新 Facebook 用户首次注册时创建 Session 对象?
我已经尝试在我的 AppDelegate 和 Parse 仪表板应用程序设置中启用和禁用 PFUser.enableRevocableSessionInBackground(),但两者都不会改变任何东西。注意:我已将应用迁移到 Parse Server。
【问题讨论】:
我注意到,当我在PFFacebookUtils.logInInBackgroundWithReadPermissions
块中调用 newFBuser.saveInBackgroundWithBlock...
时,保存似乎是 Session 对象被删除的原因。注意:我需要保存新创建的用户,因为我将从 Facebook 图形请求中获取的 Facebook 用户详细信息设置为新创建的用户。我能做什么?
【参考方案1】:
这似乎是 Parse Server 当前的 open issue #2105。
bryhaw 想出了一个解决方法:
使用调用PFFacebookUtils.logInInBackgroundWithReadPermissions
后创建的访问令牌登录,如下所示:
PFFacebookUtils.logInInBackgroundWithAccessToken(FBSDKAccessToken.currentAccessToken())
.
我会假设这会创建一个会话。
【讨论】:
感谢您的帮助。问题:应该在PFFacebookUtils.logInInBackgroundWithReadPermissions
的if let user = user
块内调用PFFacebookUtils.logInInBackgroundWithAccessToken(FBSDKAccessToken.currentAccessToken())
吗?
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) (user: PFUser?, error: NSError?) -> Void in if let user = user
以上是关于解析:新 Facebook 用户注册时不创建会话的主要内容,如果未能解决你的问题,请参考以下文章