Facebook iOS SDK 3.5.1: openActiveSessionWithReadPermissions: el controlador de finalización se llama dos veces

Tengo un botón para compartir un enlace. Estoy usando básicamente dos llamadas:openActiveSessionWithReadPermissions yrequestNewPublishPermissions.

Así que esta es la acción del botón:

- (IBAction) shareFacebookButtonAction:(id)sender
if (![[FBSession activeSession] isOpen])
        {
            NSArray *permissions = @[@"read_friendlists", @"email"];
            [FBSession openActiveSessionWithReadPermissions:permissions
                                               allowLoginUI:YES
                                          completionHandler:^(FBSession *session,
                                                              FBSessionState state,
                                                              NSError *error)
             {
                 if (FB_ISSESSIONOPENWITHSTATE([session state]))
                 {
                     [self _prepareShare];
                 }
                 else
                 {
                     // show alert view with error
                 }
             }];
        }
        else
        {        
            [self _prepareShare];
        }
    }

y con esto pido permiso de publicación, si no se encuentran permisos en la sesión

-(void) _prepareShare;
{
    if ([FBSession.activeSession.permissions
         indexOfObject:@"publish_actions"] == NSNotFound)
    {
        [FBSession.activeSession
         requestNewPublishPermissions:
         [NSArray arrayWithObject:@"publish_actions"]
         defaultAudience:FBSessionDefaultAudienceFriends
         completionHandler:^(FBSession *session, NSError *error)
         {
             if (!error)
             {
                 [self _share];
             }
             else
             {
                 //error
             }
         }];
    } else
    {
       [self _share];
    }
}

_share solo publica algo

-(void) _share;
{

    NSMutableDictionary *params_dict = [NSMutableDictionary dictionary];
    // setting some params

    [FBRequestConnection startWithGraphPath:@"me/feed" parameters:params_dict HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
    {
        if (result)
        {
            // sharing succedeed, do something
        }
        else if (error)
        {
            //sharing failed, do something else
        }
    }];
}

La primera vez que intento compartir (ya inicio de sesión en FB en iOS6 y la aplicación ya autorizada) el controlador de finalización deopenActiveSessionWithReadPermissions se llama dos veces: una vez con FBSessionStateOpen y una vez con FBSessionStateOpenTokenExtended (de la llamada a openSessionForPublishPermissions). Como consecuencia,_share También se llama dos veces, primera vez en elelse parte de_prepareShare (si ya tengo permisos de publicación) y la segunda vez en el controlador de finalización de openSessionForPublishPermissions. Así que tengo una publicación doble en el muro de Facebook, la primera vez que comparto en la aplicación. También tuve un informe de accidente paraFBSession: It is not valid to reauthorize while a previous reauthorize call has not yet completed (No pude hacer que sucediera de nuevo).

¿Cuál es la forma correcta de manejar esta situación?

Respuestas a la pregunta(3)

Su respuesta a la pregunta