Facebook Graph API: App-Zugriffstoken, Benutzerzugriffstoken ohne Interaktion erforderlich

Wir haben eine Audio-Blogging-Website, die so konfiguriert werden kann, dass sie Links zur Facebook-Timeline des Benutzers veröffentlicht, wenn dieser einen neuen Blogeintrag erstellt.

Zu diesem Zweck muss der Benutzer unsere App autorisieren, wenn er den Link zu seinem Facebook-Konto erstellt. Wir erhalten diepublish_stream, offline_access undSeiten verwalten Berechtigungen (dazu später mehr).

Der gesamte Code ist in C #, aber die Prinzipien gelten für jede Sprache, da dies die Funktionsweise der istFacebook API wir beschäftigen uns mit. Wir benutzenOAuth 2 und dasGraph API um all dies zu erreichen.

So erhalten wir eineApp-Zugriffstoken mit unseremApp-ID undGeheimnis Wenn Sie dieses Token zum Veröffentlichen auf der Timeline des Benutzers verwenden, funktioniert dies problemlos (da unsere App bereits dazu autorisiert wurde). Wir können auch die Graph-API abfragen und ihre erhaltenLikes, freunde und verschiedene andere Daten.

JETZT IST HIER DAS PROBLEM:

Einige unserer Benutzer möchten Aktualisierungen für ihren eigenen Zeitrahmen und auch für die Zeitleisten der von ihnen verwalteten Seiten veröffentlichen. In der Theorie ist dies einfach: Sie fragen die API nach den Seiten ab, die der Benutzer mithilfe dieser URL verwaltet:https://graph.facebook.com/{userid}/accounts?access_token={token}

Der von diesem Aufruf zurückgegebene JSON soll die Seiten-IDs und die Seitenzugriffstoken für diese Seiten enthalten. Anschließend verwenden Sie das Seitenzugriffstoken, um in den Zeitleisten der Seiten zu veröffentlichen.

Wenn wir jedoch versuchen, diese URL mit der aufzurufen, wirdApp-Zugriffstoken Wir bekommen eine OAuthException102 Msgstr "Ein Benutzerzugriffstoken ist erforderlich, um diese Ressource anzufordern".

Beachten Sie, dass sich dies von OAuthException unterscheidet104 "Ein Zugriffstoken ist erforderlich, um diese Ressource anzufordern" (was Sie erhalten würden, wenn Sie die Weitergabe eines Zugriffstokens versäumt hätten) und auch OAuthException190 "Ungültige OAuth-Zugriffstoken-Signatur" (die Sie erhalten würden, wenn das Zugriffstoken nicht gültig wäre).

Unser Zugriffstoken ist also gültig, aber nur für diese bestimmte URL nicht gültig. Es scheint also, dass wir eine brauchenBenutzerzugriffstoken und nicht einApp-Zugriffstoken für dieses spezielle Futter (es interessiert mich schon lange nicht mehr, warum dies der Fall ist, es scheint einfach so zu sein, wie es ist).

Die gesamte Facebook-Dokumentation zu diesem Thema (und ich muss sie inzwischen vollständig gelesen haben) führt an einen Ort:http://developers.facebook.com/docs/authentication/server-side/, auch bekannt als "Server-Side Authentication Flow" Seite. Auf dieser Seite wird beschrieben, wie Sie das schwer fassbare Benutzerzugriffstoken erhalten, indem Sie den Benutzer zum Authentifizierungsdialog umleiten und nach den entsprechenden Berechtigungen fragenDies müssen wir jedoch ohne Interaktion des Benutzers erreichen, und der Benutzer hat unserer App bereits alle erforderlichen Berechtigungen erteilt. All diese automatisierten Veröffentlichungen finden serverseitig in der Nachbearbeitung des Audios statt, sodass wir zu diesem Zeitpunkt ohnehin nicht mit dem Benutzer interagieren können.

Ich verstehe es nicht. Warum können wir das App-Zugriffstoken verwenden, um fast alle gewünschten Daten vom Benutzer abzurufen (unabhängig davon, wozu sie uns die Erlaubnis erteilt haben)?/Konten Daten, für die wir ein anderes (Benutzer-) Zugriffstoken benötigen?

Kann jemand Aufschluss darüber geben, wie wir einen Benutzerzugriffstoken erhalten, mit dem wir die / accounts-Daten für unsere Benutzer abrufen können, ohne dass der Benutzer weitere Interaktionen vornimmt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage