2015-04-02 80 views
30

我刚刚更新了我的Parse和Facebook SDK(分别为1.7.1和4.0) - 这两个都是绝对痛苦的工作,我可能会添加!解析无效的会话令牌(代码:209,版本:1.7.1)

但是我现在越来越209个错误,当我试图在这里的Facebook登录是我的代码

- (void)loginWithFacebook:(HMSuccessBlock)completion{ 
NSArray *permissionsArray = @[@"user_about_me",@"user_location",@"user_friends",@"user_relationships"]; 

// Login PFUser using Facebook 

[PFFacebookUtils logInInBackgroundWithReadPermissions:permissionsArray block:^(PFUser *user, NSError *error) { 
    if (!user) { 
     NSLog(@"Uh oh. The user cancelled the Facebook login."); 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Log In Error" 
                 message:error.localizedDescription 
                 delegate:nil 
               cancelButtonTitle:nil 
               otherButtonTitles:@"Dismiss", nil]; 
     [alert show]; 
     completion(NO, error); 

    } else if (user.isNew) { 
     NSLog(@"User signed up and logged in through Facebook!"); 
     if (completion) { 
      completion(YES, nil); 
     } 
    } else { 
     NSLog(@"User logged in through Facebook!"); 
      completion(YES, nil); 
    } 
}]; 

}

哪个yeilds以下[错误]一个例子:无效的会话令牌(代码: 209,版本:1.7.1)

我最初的想法是,这个问题必须要做些什么与我的应用程序委托代码 - 旧版本的我会申请将下面的代码

的facebooksdk的
- (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 openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
return [[FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
              sourceApplication:sourceApplication 
                annotation:annotation]; 

}

任何帮助,将不胜感激

+2

这是现在Facebook的解析工程队一个公认的bug https://developers.facebook.com/bugs/756392341145634/ – CPD 2015-04-29 15:42:41

回答

7

发布的一些答案是临时修复 - 但是如果用户注销并尝试重新登录回来,问题可能会在以后重新出现 - 我认为这是由于我允许匿名用户也是 - 我可以清除的唯一方法它是调用[pfuser注销]之前登录

+0

这将导致匿名用户在创建帐户时丢失所有数据,对吗? – picciano 2015-06-25 23:37:26

18

看这页:https://parse.com/tutorials/session-migration-tutorial

您的应用很可能使用了旧版会话令牌。您可以在设置应用程序ID和客户端密钥后立即将其添加到您的应用程序委托,从而迁移到可撤销会话令牌。

[PFUser enableRevocableSessionInBackground]; 

解析的网站有关于处理这个错误,可能是更多的帮助给你一个部分:https://www.parse.com/docs/ios_guide#sessions-handleerror/iOS

+2

嘿,感谢这次没虽然有帮助 – user499846 2015-06-12 09:15:49

+1

我有同样的问题。发生这种情况时,它不会允许您在用户登录之前进行任何解析呼叫。您必须禁用可撤销帐户,然后调用ParseUser.LoginAsync(username,pass);登录后,我删除了代码,它可以在用户再次登录之前调用解析器。 – 2015-08-02 01:52:21

+0

这工作对我来说 - > PFUser.enableRevocableSessionInBackground() – Jay 2016-12-30 01:14:24

34

删除从模拟器或手机中的应用程序,然后重新生成并重新运行应用程序。有时旧的令牌会被缓存。我刚刚解决了我的应用程序的这个问题。

+2

哦谢谢你......! – 2015-04-28 19:06:30

+1

太棒了!它帮助! upvoted :) – 2015-05-13 13:20:40

+6

这解决了我的问题,但后来再次重新加工 – user499846 2015-06-12 09:16:42

2

我想有更多的步骤必须遵循:

  1. 你必须在applicationDidBecomeActive添加[FBSDKAppEvents activateApp]

  2. 你应该写在方法didFinishLaunchingWithOptions
    return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];AppDelegate

尝试上述步骤应该适合您。

相关问题