2012-11-10 9 views
11

z Facebooka iOS SDK 3.1.1, mam wykonywania logowanie przy użyciu tego połączenia -NSInvalidArgumentException wyrzucony z ACAccountStore podczas wywoływania [FBSession openActiveSessionWithPermissions ...] na iOS 6.0 i iOS 6.0.1

NSArray *permissions = [[NSArray alloc] initWithObjects: @"email", @"user_birthday", @"user_location", nil]; 

@try { 
    return [FBSession openActiveSessionWithReadPermissions:permissions 
               allowLoginUI:allowLoginUI 
             completionHandler:^(FBSession *session, 
                  FBSessionState state, 
                  NSError *error) { 
              [self sessionStateChanged:session 
                   state:state 
                   error:error]; 
             }]; 
} 
@catch { ... } 

Istnieją rzadkie przypadki, gdy ta metoda wyrzuca NSInvalidArgumentException z komunikatem Access options are not permitted for this account type. The options argument must be nil., jest to wyrzucane z [ACAccountStore requestAccessToAccountsWithType:options:completion:].

Sprawdzanie docs jabłkiem dnia ACAccountStore, widzę ten komentarz do tej metody.

„Rodzaje kont Niektóre (takie jak Facebook) wymaga słownika opcji Ta metoda wygeneruje NSInvalidArgumentException jeśli słownika opcji nie jest warunkiem w przypadku takich typów rachunków i odwrotnie, jeśli typ konta nie wymaga słownika opcji, parametr options musi być zerowy. "

Apple wymaga, by było zero, z wyjątkiem Facebooka, ale ta metoda jest wywoływana z Facebooka, więc może to błąd - na Facebooku lub w iOS 6.0/.1, ale nie mogłem znaleźć niczego w Internecie o tym problemie.

Wszelkie pomysły?

+0

Mam crashlog z tego samego śladu. Czy kiedykolwiek to naprawiłeś ?. Z góry dziękuję! –

+0

Nie, na razie przechwyciłem wyjątek i zignorowałem go. – Kof

+0

Czy rozwiązałeś ten problem? – vburojevic

Odpowiedz

4

Znalazłem pracę związaną z tym błędem. Zauważ, że błąd jest również opisany tutaj: https://developers.facebook.com/bugs/139251032898548

Zestaw SDK Facebooka nie wykonuje zerowej kontroli wartości zwracanej przez accountTypeWithAccountTypeIdentifier. Zobacz https://github.com/facebook/facebook-ios-sdk/blob/master/src/FBSystemAccountStoreAdapter.m?source=c#L176

Aby obejść ten problem, można wykonać następujące sprawdzić przed przystąpieniem facebook lgoin:

if ([[[ACAccountStore alloc]init] accountTypeWithAccountTypeIdentifier:@"com.apple.facebook"] == nil) { 
    NSLog(@"Cannot proceed, not facebook account type identifier"); 
    return; 
} 
+0

Ale jeśli nie ma sklepu z kontem dla Facebooka, chcę aby logował się do Facebooka innymi metodami (jednokrotne logowanie itp.) Zamiast nieudanego – user102008

+0

Widziałem ten wyjątek używając 3.5.2, który sprawdza: https: //github.com/facebook/facebook-ios-sdk/blob/sdk-version-3.5.2/src/FBSystemAccountStoreAdapter.m#L174 –

Powiązane problemy