几天后PFUser currentUser返回null

时间:2015-08-28 13:03:22

标签: ios iphone facebook parse-platform local-storage

我在我的应用中看到了一个看似无效的解析用户会话的奇怪问题。我目前使用Facebook登录与Parse一起处理我的应用程序中的新用户。

在两天左右的时间内使用解析教程here中的boilerplate代码,对[PFUser currentUser]的调用将返回null,并要求我的用户重新登录。

尝试确定它是否与Parse或Facebook有关我通过尝试使用有效的Facebook会话登录时[PFuser CurrentUser]返回null并且似乎总是有效 STRONG>。

这让我认为它不是Facebook会话,但不知何故,Parse会话被破坏或不时返回一些奇怪的东西。我确定我没有注销,因为我的注销方法是用户驱动的,而不是在代码中的任何其他位置调用。

这是我正在做的授权:

-(void)authorizeAndSaveUser{

//Check to see if we already have a valid PFUser to avoid authenticating again:
if(![PFUser currentUser]){

    //*Patch - occasionally the [PFUser CurrentUser] returns null when we have a logged in user.
    //My work around for this is to login with the Facebook Token if we have one

   if([FBSDKAccessToken currentAccessToken]){ //<- This always succeeds after the user has been created!

        // Log In (create/update currentUser) with FBSDKAccessToken
        [PFFacebookUtils logInInBackgroundWithAccessToken:[FBSDKAccessToken currentAccessToken]
                                                    block:^(PFUser *user, NSError *error) {
                                                        if (!user) {
                                                            NSLog(@"Uh oh. There was an error logging in with saved FB access token.");
                                                        } else {
                                                            NSLog(@"Successful login with saved FB access token.");
                                                        }
                                                    }];

    } else { // We have never logged in before so start creating a new user

        //Ask for permissions
        NSArray *permissionsArray = @[@"public_profile", @"email"];

        // Login PFUser using Facebook
        [PFFacebookUtils logInInBackgroundWithReadPermissions:permissionsArray block:^(PFUser *user, NSError *error){

            if(!error){

                if (!user) { //Case where the user cancelled the login
                    NSLog(@"Uh oh. The user cancelled the Facebook login.");
                    //The no error case - simply a cancelled login

                 } else if (user.isNew) { //Net new user
                    NSLog(@"New User signed up and logged in through Facebook!");
                    //We have permissions so query Facebook and Write this Data to our App.
                    [self writeFacebookUserDetailsToParse];

                } else {  //Returning User
                    NSLog(@"Existing User logged in through Facebook!");

                    //We have permissions so query Facebook and Write this Data to our App in order to update profile photos etc.
                    [self writeFacebookUserDetailsToParse];
                }
            } else {  //The error case

                NSLog(@"Uh oh. An error occurred: %@", error);
                  }
           }];

    }
}

}

任何人都可以看到任何明显或提供任何建议吗?虽然不是一个固定的问题,但是每个用户都会遇到一个弹出窗口来重新登录&#34;至少每周一次......

提前致谢,

安德鲁

1 个答案:

答案 0 :(得分:0)

似乎我们的朋友在Parse使用Framework 1.9.0修复了这个问题。请在此处查看更改日志:https://www.parse.com/docs/downloads

  

“修复了currentUser在从磁盘加载时无法恢复身份验证的问题。”

我会确认我是否再次看到这个

安德鲁