Obtener "Código de error 8" al llamar – iOS Facebook

He estado buscando en Google y SO y no puedo encontrar lo que significa com.apple.accounts Código de error 8. Estoy intentando usar iOS 6 y el SDK de Facebook.

Ejecuto esta request;

if (!_accountStore) _accountStore = [[ACAccountStore alloc] init]; ACAccountType *fbActType = [_accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook]; NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys: (NSString *)ACFacebookAppIdKey, @"###############", (NSString *)ACFacebookPermissionsKey, [NSArray arrayWithObject:@"email"], nil]; [_accountStore requestAccessToAccountsWithType:fbActType options:options completion:^(BOOL granted, NSError *error) { if (granted) { NSLog(@"Success"); NSArray *accounts = [_accountStore accountsWithAccountType:fbActType]; _facebookAccount = [accounts lastObject]; } else { NSLog(@"ERR: %@",error); // Fail gracefully... } } ]; 

Obtengo este error:

ERR: Error Domain=com.apple.accounts Code=8 "The operation couldn't be completed. (com.apple.accounts error 8.)"

No importa lo que hago, nunca se devuelve la verdad. Cualquier idea sería muy apreciada.

Si omito el if(granted) y invoco esta function:

 - (void)me{ NSLog(@"Home.m - (void)me"); NSURL *meurl = [NSURL URLWithString:@"https://graph.facebook.com/me"]; SLRequest *merequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodGET URL:meurl parameters:nil]; merequest.account = _facebookAccount; [merequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *meDataString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSLog(@"%@", meDataString); }]; 

Luego veo este JSON devuelto por Facebook: {"error":{"message":"An active access token must be used to query information about the current user.","type":"OAuthException","code":2500}}}

Actualización: Entonces, el error significa "El dictionary de información de acceso del cliente tiene valores incorrectos o faltantes". pero no sé qué significa eso.

Hay un error en el dictionary de opciones.

 NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys: (NSString *)ACFacebookAppIdKey, @"###############", (NSString *)ACFacebookPermissionsKey, [NSArray arrayWithObject:@"email"], nil]; 

lea mejor la statement del método: "dictionary con object y keys", así que primer object, luego key … pero ha insertado primero KEYS y luego OBJECTS (order incorrecto 🙂

El dictionary correcto es:

  NSDictionary *options = [[NSDictionary alloc] initWithObjectsAndKeys: @"###############", ACFacebookAppIdKey, [NSArray arrayWithObject:@"email"], ACFacebookPermissionsKey, nil]; 

o, declarando el dictionary literal:

  NSDictionary *options = @{ ACFacebookAppIdKey : @"###############", ACFacebookPermissionsKey : [NSArray arrayWithObject:@"email"] };