2013-06-20 14 views
7

Ich erstelle eine ACAccountStore, erhalten Sie Zugriff auf das Facebook-Konto des Benutzers, speichern Sie das Konto in einem ACAccount Objekt und bin in der Lage, das Token aus den Anmeldeinformationen abzurufen. Aber wenn ich versuche, dieses Token zu verwenden, um Informationen von Facebook abzurufen, wird es sich nicht authentifizieren, und der Versuch, die Anmeldeinformationen mit renewCredentialsForAccount zu erneuern, wird nur eine Antwort von ACAccountCredentialRenewResultRejected ergeben.So behandeln Sie die Meldung "ACAccountCredentialRenewResultRejected" beim Aufruf von renewCredentialsForAccount

Ich kann das Erlaubnis-Pop-up nicht wieder auftauchen, um die Erlaubnis mit irgendwelchen einfachen Mitteln zu erhalten. Die einzige Möglichkeit, um die Erlaubnis erneut zu erhalten, besteht darin, entweder die Berechtigungen zu ändern, nach denen ich in der App gefragt habe, oder meinen Facebook-Account in den Einstellungen zu löschen und neu hinzuzufügen.

Wie kann ich an diesem Punkt einen gültigen Authentifizierungs-Token erhalten?

+0

Ich kann den gleichen Fehler wiederherstellen, indem ich die App von meiner App-Einstellungsseite auf Facebook lösche. Es scheint so, als müsste das Berechtigungsanfrage-Popup noch einmal ausgeführt werden, um die Erlaubnis des Benutzers zu erhalten, aber es wird einfach nicht erscheinen, bis ich mich auf meinem Telefon abmelde. – ZachLHelms

+0

Es scheint jedoch, dass beim Aufruf des 'renewCredentialsForAccount'-Aufrufs, wenn ich die App das nächste Mal starte und versuche, mich einzuloggen, ich aufgefordert werde, der App Berechtigungen zu erteilen.Während, wenn ich diesen Anruf nicht mache, werde ich nie dazu aufgefordert. – ZachLHelms

+0

Gleiches Problem hier. Einfach zu reproduzieren: 1) Erteilen Sie der App einmal die Berechtigung 2), ohne den FB Graph-Explorer zu verlassen und alle Berechtigungen zu löschen 3) Versuchen Sie renewCredentialsForAccount. Hat jemand eine Lösung dafür gefunden? FB api hat ein closeSessionsAndToken (oder ähnliches), um dieses Problem zu lösen. Aber was ist mit Social API? – Teddy

Antwort

3

Da es keine akzeptierte Antwort gibt, versuche ich zu antworten, was ich gefunden habe. Nach meinem obigen Kommentar lese ich die Dokumentation über renewCredentialsForAccount, die besagt "Wenn der Benutzer Ihre App autorisiert hat, wird diese Verlängerungsanforderung ACAccountCredentialRenewResultRejected zurückgeben."

Was ist Missleading, dass es nicht der Benutzer ist, der aber Facebook ablehnt.

Ich denke, ich verstehe das Konzept jetzt und ich versuche, denen zu antworten, die mit dieser Frage wie mir gescheitert sind. In der Tat, was ich nicht realisiert habe, ist, dass mein FB-Token vollständig zurückgesetzt wird, wenn ich ACAccountCredentialRenewResultRejected Ergebnis erhalte. Und das ist das Schlüsselelement im Puzzle.

Also, was brauchen Sie für unterschiedliche Ergebnisse zu tun:

  • ACAccountCredentialRenewResultRenewed Sie sind gut zu gehen, und Sie haben ein neues Token. Gehe und führe deinen SLRequest mit diesem erneuerten Token durch.
  • ACAccountCredentialRenewResultRejected: Ihr Token ist zurückgesetzt, wenn Sie versuchen, eine erhalten wird es ein nil sein. Sie müssen von den Benutzern Berechtigungen von Grund auf neu beantragen und die App für Facebook "installieren". Das bedeutet, dass Sie zuerst nach den üblichen "E-Mail + anderen Leseberechtigungen" fragen und (falls Sie dies wünschen) in einer separaten Anfrage nach Schreibrechten fragen. (Jemand könnte erklären, warum Facebook möchte, dass ich den Benutzer zweimal belästige, wenn ich zum Beispiel ein Foto hochladen möchte)
  • ACAccountCredentialRenewResultFailed: Ich konnte das nie reproduzieren. Ich glaube, hier fallen Sie eine Fehlermeldung an den Benutzer.

Das ist, was ich gefunden habe. Es ist eine sehr böse API, die eine schlechte Dokumentation und fehlende Beispiele hat. Auch die Beispiele im Internet sind über den "Erfolg" und sie kümmern sich nicht darum, dass der Benutzer Berechtigungen außerhalb der App widerrufen kann. Ich bin in einem konstanten Versuch & Fehler Entwicklungsmodus. Graues Haar verlieren, aber bis zum Ende kommen. Ich hoffe, meine Antwort hilft anderen.

+0

sehr nützliche und detaillierte Erklärung, Daumen hoch! –

Verwandte Themen