解析:新 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.logInInBackgroundWithReadPermissionsif let user = user 块内调用PFFacebookUtils.logInInBackgroundWithAccessToken(FBSDKAccessToken.currentAccessToken()) 吗? PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) (user: PFUser?, error: NSError?) -> Void in if let user = user

以上是关于解析:新 Facebook 用户注册时不创建会话的主要内容,如果未能解决你的问题,请参考以下文章

PyFacebook 无限会话

解析错误代码 206:无法修改用户(解析服务器)

解析服务器注册无效会话令牌错误

检查 IOS 上的 Facebook Connect 会话

提供的 Facebook 会话令牌已过期或无效

解析 Facebook 登录 Swift 3.0