解析无效会话令牌(代码:209,版本:1.7.1)

use*_*846 31 facebook objective-c ios parse-platform facebook-sdk-4.0

我刚刚更新了我的Parse和Facebook SDK(分别为1.7.1和4.0) - 两者都是我可能添加的工作的绝对痛苦!

但是,当我尝试使用Facebook登录时,我现在收到209错误.

这是我的代码示例:

- (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);
    }
}];
}
Run Code Online (Sandbox Code Playgroud)

以下是[错误]:会话令牌无效(代码:209,版本:1.7.1)

我最初的想法是问题与app代理中的代码有关 - 在旧版本的facebooksdk上我将应用以下代码

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [FBAppCall handleOpenURL:url
              sourceApplication:sourceApplication
                    withSession:[PFFacebookUtils session]];
}
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法在更新版本中找到任何可以复制它的东西,因此我的代码就是

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                      openURL:url
                                            sourceApplication:sourceApplication
                                                   annotation:annotation];
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Ron*_*oh1 34

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

  • 这解决了我的问题,但后来又重新恢复了 (6认同)

小智 18

查看此页面:https://parse.com/tutorials/session-migration-tutorial

您的应用最有可能使用旧版会话令牌.您可以在设置应用程序ID和客户端密钥后立即将此添加到您的应用程序委托中,以迁移到可撤销会话令牌.

    [PFUser enableRevocableSessionInBackground];
Run Code Online (Sandbox Code Playgroud)

Parse的网站有一个关于处理此错误的部分,可能对您有所帮助:https://www.parse.com/docs/ios_guide#sessions-handleerror/iOS

  • 嘿,谢谢,但没有帮助 (2认同)

use*_*846 7

发布的一些答案是临时修复 - 但是如果用户退出并尝试重新登录,问题可能会再次出现 - 我认为这是因为我也允许匿名用户 - 我唯一可以清除它的方法就是调用登录前[pfuser logout]