[英]PFUser currentUser returns nil after Facebook Login with Parse SDK
我目前正在开发一个iOS应用,该应用允许通过Facebook / Parse登录。 登录流程如下所示:
触摸登录按钮并打开Facebook登录窗口;
用户登录并在Facebook上授予许可;
应用程序检索Facebook accessToken信息;
应用执行[PFFacebookUtils logInInBackGroundWithAccessToken:(accessToken)^ block {}]进行解析登录身份验证;
应用进入视图并尝试执行查询以从Parse中获取与该用户关联的数据。
问题是:执行logInInBackgroundWithAccessToken之后,[PFUser currentUser]返回nil,并且出现“无法对类型进行比较查询:(空)”错误。
好! 解决了!
在深入研究代码后,我意识到
[PFFacebookUtils logInInBackgroundWithAccessToken:(accessToken) block:^(nullable__block){}];
由于未知原因,未执行回调。
为了解决这个问题,我在视图的-viewDidLoad方法中添加了一个检查,以查看是否存在有效的[FBSDKAccessToken currentAccessToken]但不是有效的[PFUser currentUser],如果是,则强制执行该方法。
如果您需要更详尽的解释,请随时发表评论! 谢谢!
if ((currentUser != nil)) {
if (PFFacebookUtils.isLinkedWithUser(currentUser!)) {
proccessCurrent(currentUser!)
} else {
PFFacebookUtils.linkUserInBackground(currentUser!, withReadPermissions: self.facebookReadPermissions, block: {(success, error) in
if (success) {
self.proccessCurrent(currentUser!)
} else {
self.presentWalkThroughViewController()
}
})
}
} else {
//var currentToken: FBSDKAccessToken = FBSDKAccessToken.currentAccessToken()
if (FBSDKAccessToken.currentAccessToken() == nil) {
self.presentWalkThroughViewController()
} else {
var currentToken: FBSDKAccessToken = FBSDKAccessToken.currentAccessToken()
PFFacebookUtils.logInInBackgroundWithAccessToken(currentToken, block: {(user, error) in
if (error == nil) {
user?.pinInBackgroundWithBlock({(success, error) in
if (success) {
self.proccessCurrent(user!)
} else {
self.presentWalkThroughViewController()
}
})
} else {
self.presentWalkThroughViewController()
}
})
}
}
方法processCurrentUser,继续处理我的程序执行,presentWalkThroughViewController呈现登录屏幕。 一旦用户已经登录,这是否是一种安全的方法来跳过在Facebook上的登录屏幕?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.