FB登录后解析会话令牌无效

Posted

技术标签:

【中文标题】FB登录后解析会话令牌无效【英文标题】:Invalid parse session token after FB login 【发布时间】:2016-01-21 17:23:47 【问题描述】:

我的解析应用程序出现问题。我有当前匿名用户的 Facebook 链接功能。

在 AppDelegate 文件中我有这个功能:

if (PFUser.currentUser() == nil) 
    PFAnonymousUtils.logInInBackground()
 else if (PFUser.currentUser() != nil && PFFacebookUtils.isLinkedWithUser(PFUser.currentUser()!)) 
    PFFacebookUtils.logInInBackgroundWithAccessToken(FBSDKAccessToken.currentAccessToken())

但是在当前用户的Facebook登录/链接之后,在接下来的几个应用程序启动中,收到错误209。

我在这里阅读了几乎所有被问到的问题,但没有什么能解决我的问题。

当用户点击 Facebook 登录按钮时:

if PFFacebookUtils.isLinkedWithUser(PFUser.currentUser()!) 
        PFFacebookUtils.linkUserInBackground(PFUser.currentUser()!, withReadPermissions: permissions, block:  (success: Bool, error: NSError?) -> Void in
            if success.boolValue 
                PFFacebookUtils.linkUserInBackground(PFUser.currentUser()!, withAccessToken: FBSDKAccessToken.currentAccessToken())
                self.obtainFacebookProfile()
            
        )
     else 
        PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, block:  (user: PFUser?, error: NSError?) -> Void in
            if error != nil 
                return
            

            if user != nil 
                PFFacebookUtils.linkUserInBackground(user!, withAccessToken: FBSDKAccessToken.currentAccessToken()) 
                self.obtainFacebookProfile()
            
        )
    

我的 android 应用程序中也有相同的实现,没有这样的问题...

【问题讨论】:

【参考方案1】:

我认为我通过在 AppDelegate 类中删除 Facebook 登录解决了这个问题。由于当前用户已与 Facebook 个人资料关联,因此无需在应用启动时再次执行此操作,因为它会生成新的会话令牌。问题是 Parse 可能无法在下一个数据请求发出之前更新数据库中的会话令牌。

【讨论】:

我遇到了同样的问题,很明显 parse 在令牌过期后不会更新 User 表中的令牌。你能解释一下你是如何解决这个问题的吗?我可以通过 FBSDK 获取新的 FB 令牌,但 Parse 仍然没有更新 User 表中的条目

以上是关于FB登录后解析会话令牌无效的主要内容,如果未能解决你的问题,请参考以下文章

更改密码后 Parse 中的会话令牌无效

直接访问登录表单时未设置会话 cookie,导致 CSRF 令牌无效

FB iOS SDK 自定义令牌缓存问题

X-Auth-Token 在 1 个会话后无效

如何在某人更改密码后使用户的 JWT 令牌无效

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