Facebook iOS SDK 3.5.1: openActiveSessionWithReadPermissions - Abschluss-Handler wurde zweimal aufgerufen

8

Ich habe einen Knopf, um einen Link zu teilen. Ich benutze grundsätzlich zwei Anrufe: openActiveSessionWithReadPermissions und requestNewPublishPermissions .

Das ist also die Tastenaktion:

%Vor%

und damit verlange ich die Veröffentlichungserlaubnis, wenn in der Sitzung keine Erlaubnis gefunden wird

%Vor%

_share schreibt einfach etwas

%Vor%

Zum ersten Mal versuche ich zu teilen (bereits angemeldet FB in iOS6 und App bereits autorisiert) Abschlusshandler von openActiveSessionWithReadPermissions wird zweimal aufgerufen: einmal mit FBSessionStateOpen und einmal mit FBSessionStateOpenTokenExtended (aus dem Aufruf von openSessionForPublishPermissions). Als Konsequenz wird _share auch zweimal aufgerufen, zum ersten Mal im else -Teil von _prepareShare (wenn ich bereits über Veröffentlichungsberechtigungen verfüge) und zum zweiten Mal im Beendigungshandler von openSessionForPublishPermissions. Also habe ich einen doppelten Post auf Facebook Wall, nur das erste Mal, dass ich jemals in der App teile. Ich hatte auch einen Absturzbericht für FBSession: It is not valid to reauthorize while a previous reauthorize call has not yet completed (ich konnte es nicht wiederholen).

Was ist der richtige Weg, um mit dieser Situation umzugehen?

    
laucel 22.05.2013, 08:24
quelle

3 Antworten

13

Es scheint so zu sein, dass das Facebook SDK per Verweis Referenzen auf Blockhandler enthält, selbst nachdem sie aufgerufen wurden. In Ihrem Aufruf von openActiveSessionWithReadPermissions kann der Beendigungshandler daher mehrmals aufgerufen werden, falls sich der Sitzungsstatus ändert. Siehe Facebooks kommentieren dieses Problem hier .

Als Umgehung möchten Sie möglicherweise einen eigenen Mechanismus implementieren, der sicherstellt, dass der Handler nur einmal ausgelöst wird:

%Vor%     
arielyz 19.06.2013 17:51
quelle
2

Sie können dies verwenden

%Vor%

}

und publishFacebook-Methode

%Vor%

}

    
Alihan Aktay 22.05.2013 08:30
quelle
1

Bitte lesen Sie Upgrade von 3.0 auf 3.1 , insbesondere den Absatz Bitte um Lesen & amp; Schreiben Sie Berechtigungen separat . Es sieht so aus, als ob Facebook SDK nicht dazu gedacht ist, so verwendet zu werden.

  

Sie müssen jetzt die Lese- und Veröffentlichungsberechtigung separat anfordern (und in dieser Reihenfolge). Wahrscheinlich werden Sie die Leseberechtigungen für die Personalisierung anfordern, wenn die App gestartet wird und der Benutzer sich zuerst anmeldet. Später kann Ihre App ggf. Veröffentlichungsberechtigungen anfordern, wenn sie Daten an Facebook senden möchte.

und

  

Es ist wichtig, dass Sie nicht einfach versuchen, die beiden einzelnen Methoden nacheinander aufzurufen, um eine der veralteten Funktionen zu ersetzen.

Ich frage mich, wie Sie dieses Problem lösen konnten. BTW, ich bekomme den gleichen Absturzbericht (FBSession: Es ist nicht zulässig, erneut zu autorisieren, während ein vorheriger Reauthorize-Aufruf noch nicht abgeschlossen ist).

    
Fr4ncis 06.11.2013 11:16
quelle