Facebook iOS 3.1 SDK Login mit Publish Permit Callbacks

Ich habe Probleme beim Anmelden mit Veröffentlichungsberechtigungen in Facebook 3.1 ios sdk.

Meine App verfügt über eine Schaltfläche zum Freigeben eines Videos. Wenn der Benutzer darauf klickt, möchte ich die grundlegende + Veröffentlichungsberechtigung hinzufügen. Soweit ich weiß, muss ich zwei Anrufe tätigen -

openActiveSessionWithReadPermissions, und dannreauthorizeWithPublishPermissions

Hier ist der Code, den ich gerade verwende:

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

Ich sehe, dass der Block in openSessionForReadPermissions zweimal aufgerufen wird (einmal mit FBSessionStateOpen und einmal mit FBSessionStateOpenTokenExtended aus dem openSessionForPublishPermissions-Aufruf), und ich erhalte einen ErrorReauthorizeFailedReasonUserCancelled, wenn ich zum ersten Mal versuche, mich bei der App anzumelden (wenn O-Berechtigungen gelöscht).

Wie kann dieses Login korrekt implementiert werden? Für die App ist kein Facebook-Login erforderlich, mit Ausnahme dieser einen Funktion. Der Anmeldevorgang sollte also auf demselben Tastendruck erfolgen.

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage