Logowanie do Facebooka iOS 3.1 za pomocą wywołań zwrotnych uprawnień do publikowania

Mam problem z zalogowaniem się z uprawnieniami do publikowania na facebooku 3.1 ios sdk.

Moja aplikacja ma przycisk do udostępniania wideo, a gdy użytkownik go kliknie, chcę dodać uprawnienie podstawowe + publikowanie. Jak rozumiem, muszę wykonać dwa połączenia -

openActiveSessionWithReadPermissions, i wtedyreauthorizeWithPublishPermissions

Oto kod, którego używam teraz:

//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];
         }
     }];
}

Widzę, że blok w openSessionForReadPermissions jest wywoływany dwa razy (raz z FBSessionStateOpen i raz z FBSessionStateOpenTokenExtended z wywołania openSessionForPublishPermissions) i otrzymuję ErrorReauthorizeFailedReasonUserCancelled przy pierwszej próbie zalogowania się do aplikacji (jeśli O usunął wszystkie uprawnienia aplikacji wcześniej).

Jaki jest właściwy sposób wdrożenia tego logowania? Aplikacja nie wymaga logowania na Facebooku, z wyjątkiem tej jednej funkcji, więc proces logowania powinien odbywać się na tym samym przycisku.

Dzięki!