Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios PFUser currentUser在使用Parse SDK登录Facebook后返回nil_Ios_Facebook_Parse Platform - Fatal编程技术网

Ios PFUser currentUser在使用Parse SDK登录Facebook后返回nil

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{}]以进行解析登录身份验证 应用程序转到一个视图并尝试执行一个查询,以从解析中获取与该用户关联的数据 问题是:在

我目前正在开发一个iOS应用程序,允许通过Facebook/Parse登录。登录流程如下所示:

  • 点击登录按钮,Facebook登录窗口打开

  • 用户登录并在Facebook上授予权限

  • 应用程序检索Facebook accessToken信息

  • 应用程序执行[PFFacebookUtils LoginBackgroundithAccessToken:(accessToken)^block{}]以进行解析登录身份验证

  • 应用程序转到一个视图并尝试执行一个查询,以从解析中获取与该用户关联的数据

问题是:在执行LoginBackgroundithAccessToken之后,[PFUser currentUser]返回nil,我得到一个“无法对类型进行比较查询:(null)”错误。

确定!解决了

在进一步研究代码之后,我意识到

[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登录屏幕的安全方法吗