2015-04-02 58 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

嘗試上述步驟應該適合您。

相關問題