我在我的应用中看到了一个看似无效的解析用户会话的奇怪问题。我目前使用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;至少每周一次......
提前致谢,
安德鲁
答案 0 :(得分:0)
似乎我们的朋友在Parse使用Framework 1.9.0修复了这个问题。请在此处查看更改日志:https://www.parse.com/docs/downloads
“修复了currentUser在从磁盘加载时无法恢复身份验证的问题。”
我会确认我是否再次看到这个
安德鲁