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!