Ios PFUser currentUser在使用Parse SDK登录Facebook后返回nil
我目前正在开发一个iOS应用程序,允许通过Facebook/Parse登录。登录流程如下所示:Ios PFUser currentUser在使用Parse SDK登录Facebook后返回nil,ios,facebook,parse-platform,Ios,Facebook,Parse Platform,我目前正在开发一个iOS应用程序,允许通过Facebook/Parse登录。登录流程如下所示: 点击登录按钮,Facebook登录窗口打开 用户登录并在Facebook上授予权限 应用程序检索Facebook accessToken信息 应用程序执行[PFFacebookUtils LoginBackgroundithAccessToken:(accessToken)^block{}]以进行解析登录身份验证 应用程序转到一个视图并尝试执行一个查询,以从解析中获取与该用户关联的数据 问题是:在
- 点击登录按钮,Facebook登录窗口打开
- 用户登录并在Facebook上授予权限
- 应用程序检索Facebook accessToken信息
- 应用程序执行[PFFacebookUtils LoginBackgroundithAccessToken:(accessToken)^block{}]以进行解析登录身份验证
- 应用程序转到一个视图并尝试执行一个查询,以从解析中获取与该用户关联的数据
[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,continue to ProcessMy program execution and presentWalkThroughViewController显示登录屏幕。一旦用户已经登录,这是处理跳过facebook登录屏幕的安全方法吗