Login do Facebook SDK para iOS 3.1 com callbacks de permissão de publicação

Estou tendo problemas para fazer login com permissões de publicação no facebook 3.1 ios sdk.

Meu aplicativo tem um botão para compartilhar um vídeo e, quando o usuário clica nele, quero adicionar a permissão básica de publicação +. Pelo que entendi, eu tenho que fazer duas chamadas -

openActiveSessionWithReadPermissions, e depoisreauthorizeWithPublishPermissions

Aqui está o código que estou usando agora:

//Opens a Facebook session and optionally shows the login UX.
- (void)openSessionForReadPermissions
{
    [FBSession openActiveSessionWithReadPermissions:nil
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {

         //this is called even from the reauthorizeWithPublishPermissions
         if (state == FBSessionStateOpen && !error)
         {
             [self openSessionForPublishPermissions];
         }
         else if (state == FBSessionStateClosedLoginFailed)
         {
             [FBSession.activeSession closeAndClearTokenInformation];

             [[NSNotificationCenter defaultCenter] postNotificationName:FBLoginErrorNotification object:session];
         }
     }];
}

-(void)openSessionForPublishPermissions
{    
    NSArray* permissions = [NSArray arrayWithObject:@"publish_stream"];

    [[FBSession activeSession] reauthorizeWithPublishPermissions:permissions
                                                 defaultAudience:FBSessionDefaultAudienceFriends
                                               completionHandler:
     ^(FBSession *session, NSError *error)
     {
         if (!error)
         {
             [[NSNotificationCenter defaultCenter]
              postNotificationName:FBLoginSuccessNotification
              object:session];
         }
         else
         {
             [[NSNotificationCenter defaultCenter]
              postNotificationName:FBLoginErrorNotification
              object:session];
         }
     }];
}

Vejo que o bloco no openSessionForReadPermissions é chamado duas vezes (uma vez com FBSessionStateOpen e uma vez com FBSessionStateOpenTokenExtended da chamada openSessionForPublishPermissions), e recebo um ErrorReauthorizeFailedReasonUserCancelled ao tentar primeiro efetuar login no aplicativo (se O excluiu todas as permissões de aplicativo anteriormente).

Qual é a maneira correta de implementar esse login? O aplicativo não exige o login do Facebook, exceto por esse recurso, portanto, o processo de login deve estar no mesmo botão.

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion