使用Parse iOS的Facebook和Twitterlogin只能使用一次
我在Parse SDK中使用twitter和Facebooklogin。 对于每个应用程序启动,我都可以login到每个服务一次,但是当我使用[PFUser logOut]注销时,我无法再次login。 用户或错误永远不会调用[PFFVideosUtils logInWithPermissions]块。
我的(Facebook)login代码是:
- (IBAction)facebookLogin:(id)sender { NSArray *permissionsArray = @[ @"user_about_me" ]; // Login PFUser using Facebook [PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) { if (!user) { NSString *errorMessage = nil; if (!error) { NSLog(@"Uh oh. The user cancelled the Facebook login."); errorMessage = @"Uh oh. The user cancelled the Facebook login."; } else { NSLog(@"Uh oh. An error occurred: %@", error); errorMessage = [error localizedDescription]; } UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Log In Error" message:errorMessage delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Dismiss", nil]; [alert show]; } else { if (user.isNew) { NSLog(@"User with facebook signed up and logged in!"); } else { NSLog(@"User with facebook logged in!"); } } }]; }
我的注销码是:
- (IBAction)loginButton:(id)sender { if([PFUser currentUser]) { [PFUser logOut]; NSLog(@"User is %@", [PFUser currentUser]); NSLog(@"Facebook session is %@", [PFFacebookUtils session]); NSLog(@"Facebook session is %@", FBSession.activeSession.observationInfo); } else { [self performSegueWithIdentifier:@"loginScreenSegue" sender:self]; } }
一切日志(空)。
我认为,因为行为与Twitter相同,可能与我的AppDelegate中的OAuth相关方法有关:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication withSession:[PFFacebookUtils session]]; } - (BOOL) application:(UIApplication *)application handleOpenURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication withSession:[PFFacebookUtils session]]; }
但是做了大量的研究,似乎没有失去任何东西…
我也有这些在AppDelegate中:
- (void)applicationWillResignActive:(UIApplication *)application { [[PFFacebookUtils session] close]; } - (void)applicationWillTerminate:(UIApplication *)application { [[PFFacebookUtils session] close]; } - (void)applicationDidBecomeActive:(UIApplication *)application { [FBAppCall handleDidBecomeActiveWithSession:[PFFacebookUtils session]]; }
任何帮助将非常感激地收到!
在你注销的方法,你应该清除Facebook会话令牌,如下所示:
[[FBSession activeSession]closeAndClearTokenInformation];
这将清除活动的Facebook会话令牌。
好的,我终于解决了这个问题。 问题是,在我的应用程序在Twitter上设置,权限设置为“只读”,而不是“读写”。
改变这个设置解决了facebook和twitter的问题。