2015-04-02 10 views
30

Hem Parse hem de Facebook SDK'larımı (sırasıyla 1.7.1 ve 4.0) güncelledim - her ikisi de eklemek için mutlak bir acıydı! geçersiz oturum jetonu (Kod:Geçersiz oturum belirtecini ayrıştırma (Kod: 209, Sürüm: 1.7.1)

Burada facebook ile giriş yapmaya çalıştığımda şimdi 209 hataları almak Ancak şu [Hata] yeilds kodumu

- (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); 
    } 
}]; 

}

bir örnek: 209, Sürüm: 1.7.1)

benim ilk düşünce sorunu uygulaması temsilci benim koduyla ilgili bir şey olduğudur - aşağıdaki kodu

geçerli olacak facebooksdk eski sürümlerinde Ben dolayısıyla benim kod

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
return [[FBSDKApplicationDelegate sharedInstance] application:application 
                 openURL:url 
              sourceApplication:sourceApplication 
                annotation:annotation]; 

}

Herhangi bir yardım olurdu olmak güncellenmiş sürümünde bu çoğaltmak için bir şey bulamıyorum Ancak

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

}

ölçüde

+2

Bu oturum öncesinde [pfuser logout] aramak için bu yoktu https://developers.facebook.com/bugs/756392341145634/ – CPD

cevap

7

Gönderilen yanıtlardan bazıları geçici düzeltmelerdi - ancak bir kullanıcı giriş yaptıysa ve tekrar oturum açmaya çalıştıysa sorun daha sonra tekrar ortaya çıkabilirdi - bence bu, anonim kullanıcılara da izin vermemden kaynaklanıyordu. şimdi

+0

localstorage'dan kaldırarak temizleyebilirsiniz. Bu, anonim kullanıcının bir hesap oluştururken tüm verilerini kaybetmesine neden olur, değil mi? – picciano

18
takdir

Bu sayfaya bakın: https://parse.com/tutorials/session-migration-tutorial

Büyük olasılıkla uygulamanız eski oturum jetonlarını kullanıyordu. Uygulama kimliğini ve istemci anahtarını belirledikten hemen sonra uygulamanızın temsilci temsilcisine ekleyerek, iptal edilebilir oturum jetonlarına geçebilirsiniz. https://www.parse.com/docs/ios_guide#sessions-handleerror/iOS

+2

sağ ol Facebook Ayrıştırma Müh ekibi tarafından kabul edilen bir hata olduğunu Yine de – user499846

+1

ile aynı sorunu yaşadım. Bu olduğunda, kullanıcı giriş yapana kadar ayrıştırma için HERHANGİ çağrı yapmanıza izin vermez.Devre Dışı Hesapları devre dışı bırakmanız ve ardından ParseUser.LoginAsync (kullanıcı adı, geçiş) olarak adlandırmanız gerekir; Giriş yaptıktan sonra kodu kaldırdım ve kullanıcı tekrar giriş yapmadan önce ayrıştırmak için arama yapabilir. –

+0

Bu benim için çalıştı -> PFUser.enableRevocableSessionInBackground() – Jay

34

sonra yeniden inşa etmek ve uygulamayı yeniden çalıştırın simülatörü veya telefonunuzdan uygulamayı silin:

[PFUser enableRevocableSessionInBackground]; 

ayrıştırmak web sitesini size daha fazla yardımcı olabilecek bu hatayı işleme bir bölüm vardır. Bazen eski bir jeton önbelleğe alınır. Uygulamam için bu sorunu çözdüm.

+2

Oh teşekkürler ...! –

+1

Harika! Bu yardımcı oldu! upvoted :) –

+6

Bu benim sorunumu çözdü, ancak daha sonra yeniden sonra tekrar – user499846

2

Biraz daha fazla adım izlenecek orada gerektiğini düşünüyorum:

  1. Sen applicationDidBecomeActive yılında [FBSDKAppEvents activateApp] eklemek zorunda.

  2. Sen AppDelegate yöntemin didFinishLaunchingWithOptions yılında
    return [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions]; yazmalı.

Yukarıdaki adımlar sizin için çalışmalıdır.

İlgili konular