Solicitud de FBSessionNewPublishPermissions cómo manejar la acción del usuario "Saltar"

Encontré un problema interesante.

Cuando solicito nuevos permissions de publicación, fb sdk muestra el cuadro de dialog con el button "Saltar". Lo estoy manejando así

[[[appDelegate facebook] session] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone completionHandler:^(FBSession *session, NSError *error) { if (!error) { //do smth if there is no error } }]; 

Pero cuando el usuario presionó "Saltar" dentro del cuadro de dialog, el error es nulo.

¿Cómo manejarlo? Tal vez no entiendo nada. Gracias.

Lo mismo para mí, parece que es un error en Facebook SDK, pero no estoy seguro. He agregado control adicional si la session tiene nuevos permissions.

  - (void)postToFacebookWithMessage:(NSString *)message completionBlock:(void (^)(NSError *))completionBlock { NSArray *permissions = @[@"publish_actions"]; void (^completionHandler)(FBSession *session, NSError *error) = ^(FBSession *session, NSError *error) { if (error != nil) { if (completionBlock != nil) { completionBlock(error); } } else if(![self activeSessionHasPermissions:permissions]) { NSError *error = [NSError errorWithDomain:@"Facebook" code:FBAccessDisabledCode userInfo:@{NSLocalizedDescriptionKey:NSLocalizedString(@"Facebook access disabled", @"Facebook access disabled")}]; if (completionBlock != nil) { completionBlock(error); } } else { NSMutableDictionary<FBGraphObject> *action = [FBGraphObject graphObject]; action[@"message"] = message; [FBRequestConnection startForPostWithGraphPath:@"me/og.posts" graphObject:action completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { // internal error 1611231 means that this was already posted if (error.code == 5) { error = [NSError errorWithDomain:@"Facebook" code:FBDuplicateActionErrorCode userInfo:@{NSLocalizedDescriptionKey:NSLocalizedString(@"Already posted to Facebook", @"Already posted to Facebook")}]; } if (completionBlock != nil) { completionBlock(error); } }]; } }; if ([self activeSessionHasPermissions:permissions]) { completionHandler([FBSession activeSession], nil); } else { [[FBSession activeSession] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone completionHandler:completionHandler]; } } - (BOOL)activeSessionHasPermissions:(NSArray *)permissions { __block BOOL hasPermissions = YES; for (NSString *permission in permissions) { NSInteger index = [[FBSession activeSession].permissions indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { if ([obj isEqualToString:permission]) { *stop = YES; } return *stop; }]; if (index == NSNotFound) { hasPermissions = NO; } } return hasPermissions; } 

espero que esto te ayude