Wie gehe ich mit Facebooks Ablehnung von offline_access um, wenn ich das Token sowohl in einer iOS-App als auch auf einem Server verwende?

FacebooksMissbilligung desoffline_access Die Erlaubnis wird im Mai 2012 erteilt und die Dokumentation gibt uns nicht genügend Informationen darüber, wie wir damit umgehen sollen.

Wir haben eine iOS-App und einen entsprechenden Dienst, der sie unterstützt und in Facebook integriert, um die Freundesliste eines Benutzers in unserer App zu nutzen (wenn Ihre FB-Freunde die App auch verwenden, können Sie sich einfacher verbinden). So scheinen alle Social Apps zu funktionieren, also hier nichts Besonderes.

Klient

Unsere App nutztFacebook iOS SDK um dem Benutzer zu erlauben, sich einzuloggen, wonach wir gerade fragenoffline_access. Das Token wird in unserer iOS-App beibehalten, aber auch an unseren Server gesendet, auf dem es gespeichert wird. Der Client handelt im Namen des Benutzers, um Aktualisierungen in den Newsfeed eines Benutzers zu posten (wir bitten auch umpublish_stream Genehmigung).

Server

Unser Server prüft regelmäßig, ob die FB-Freunde des Benutzers jetzt unsere App verwenden. Wenn sich der Benutzer das nächste Mal anmeldet, legen wir Inhalte und Beziehungen auf eine bestimmte Weise offen, um für die Freunde des Benutzers zu werben. Der Server handelt auch im Auftrag des Benutzers, um sich regelmäßig mit der Grafik-API zu verbinden und die aktuelle Freundesliste des Benutzers abzurufen. Auf diese Weise können wir Änderungen in den Beziehungen eines Benutzers berücksichtigen und diese in unserer App widerspiegeln. Wir tun dies, wenn der Benutzer die App derzeit nicht verwendet, damit er bei der nächsten Verwendung die beste Erfahrung hat. Um dies zu ermöglichen, sendet unsere iOS-App das Zugriffstoken an unseren Server, den sie verwendet und nach dem wir fragenoffline_access.

Hinweis: Wenn sich der Benutzer ausdrücklich von unserer App abmeldet, löschen wir die Zugriffstoken sowohl vom Client als auch vom Server.

Probleme

Jetzt, da es kein dauerhaftes Zugriffstoken mehr gibt, das wir verwenden können, versuche ich herauszufinden, wie unsere Szenarien am besten noch aktiviert werden können, während ich die neue beabsichtigte Methode von Facebook für den Umgang mit und die Erweiterung von Zugriffstoken nutze. Die Dokumentation ist leider nicht ganz hilfreich.

Fragen

EIN. Wenn Sie sich über das neueste Facebook iOS SDK authentifizieren, wie lange ist die Standardlebensdauer des erhaltenen Zugriffstokens?Dieses Dokument Laut einer erweiterten Token-Anfrage erhalten Sie eine, die 60 Tage dauert. Dieseanderes Dokument spricht über die erste Access-Token-Anfrage und erwähnt unterschiedliche Gültigkeiten, aber es istunklar und spricht es von bestimmten Gültigkeitszeiten:

(Schwerpunkt liegt bei mir)

Wenn Sie ein Zugriffstoken von Facebook erhalten, ist es sofort gültig und kann bei Anfragen an die API für einen von Facebook festgelegten Zeitraum verwendet werden. Nach Ablauf dieser Frist gilt das Zugriffstoken als abgelaufen und der Benutzer muss erneut authentifiziert werden, damit Ihre App ein neues Zugriffstoken erhält.Die Dauer, für die ein bestimmtes Zugriffstoken gültig ist, hängt davon ab, wie es generiert wurde.

Es gibt auch Ereignisse, die dazu führen können, dass ein Zugriffstoken vor dem erwarteten Ablaufdatum ungültig wird. Zu solchen Ereignissen gehört, dass der Benutzer sein Kennwort ändert und eine Anwendung ihr App Secret aktualisiert. Der Umgang mit unterschiedlichen Ablaufzeiten für Zugriffstoken und der Umgang mit dem Fall, dass ein Zugriffstoken vor Ablauf seiner erwarteten Ablaufzeit ungültig wird, sind für den Aufbau solider sozialer Erfahrungen von entscheidender Bedeutung.

B. Für den Kunden ist jetzt, da das Zugriffstoken nicht unbedingt von langer Dauer ist, der richtige Ansatz, um:

Lassen Sie sich über FB anmelden und erkennen Sie, wann der Zugriffstoken abgelaufen ist. Wenn dies der Fall ist, rufen Sie das FB iOS SDK auf, um eine erneute Authentifizierung / Autorisierung durchzuführen. (Dies sollte nur dazu führen, dass Benutzer zur FB iOS-App springen und in den meisten Fällen sofort mit einem neuen Zugriffstoken zu unserer App zurückkehren.)

C. Gemäßdieser Blogbeitrag Ich habe festgestellt, dass Sie ein Zugriffstoken nur einmal erweitern können:

Kann ich mein 60-Tage-Zugriffstoken gegen ein neues 60-Tage-Zugriffstoken austauschen?

Nein, tut mir leid, das kannst du nicht. Sie können nur ein gültiges (dh aktuelles) Benutzerzugriffstoken gegen ein erweitertes Token austauschen. Sie können ein bereits erweitertes Zugriffstoken nicht erweitern.

Auf dem Client kann ich dies nur tun, indem ich eine erneute Authentifizierung / Autorisierung anfordere, wie in Frage B erwähnt. Auf unserem Server funktioniert dies jedoch nicht. Wir könnten den Server sicherlich einmal auf 60 Tage verlängern lassen, aber was passiert am 61. Tag? Der Server kann die Freundesliste nicht mehr synchronisieren?

D. Es erscheint sinnvoll, die Gültigkeit des FB-Zugriffstokens jedes Mal zu überprüfen, wenn die App gestartet oder aus dem Ruhezustand reakti- viert wird. Wie kann unsere iOS-App dies am besten überprüfen? Gibt es einen empfohlenen Endpunkt zum Aufrufen, um ein Token zu validieren? Sollen wir einfach anrufenhttps://graph.facebook.com/me Übergeben Sie das Zugriffstoken und überprüfen Sie die Antwort?

Hinweis: Wir können das durchaus aufnehmenexpires Wenn wir das ursprünglich erweiterte Token erhalten, ist dies jedoch nicht zuverlässig, da der Benutzer die Erlaubnis unserer App jederzeit widerrufen kannexpires Mal ein unzuverlässiger Datenpunkt zur Gültigkeit

Antworten auf die Frage(2)

Ihre Antwort auf die Frage