Facebook-Zugriffstoken für Seiten

115

Ich habe eine Facebook-Seite, auf der ich einige Dinge daraus machen möchte. Das erste sind Feeds und nach dem, was ich gelesen habe, sind sie öffentlich (kein access_token erforderlich). Aber ich möchte auch die Ereignisse erhalten ... und sie sind nicht öffentlich und benötigen das access_token.

Ich möchte nicht, dass sich der Benutzer bei Facebook anmeldet oder so etwas. Ich möchte nur alle Daten, die ich kann, von dieser einzigen Seite übertragen. Aus diesem Grund habe ich bereits viele Beispiele verworfen, die ich hier und unter https://developers.facebook.com/blog/post/500/ gefunden habe , weil sie möchten, dass sich der Benutzer anmeldet oder eine Benutzeraktion erfordert, die mich nicht interessiert.

Ich möchte, dass meine Facebook-Anwendung über die vollständige Berechtigung und das Zugriffstoken verfügt, um die Daten von dieser einen Facebook-Seite, die ich besitze (Administrator), zu übertragen. Ist das möglich? Ich habe bereits viele Dinge ausprobiert, aber nichts scheint zu funktionieren.

Ich habe versucht, darauf zu klicken: https://www.facebook.com/dialog/oauth?client_id=150635421702954&redirect_uri=http://MY_URL/&scope=manage_pages&response_type=token&fields=access_token - Ändern von MY_URL auf meine Website bearbeiten Seite, die ich besitze. Auch wenn ich nicht das bin, was ich will, habe ich geklickt, aber kein access_token erhalten ...

bsides
quelle
Um Ereignisse zu erhalten, mache ich das jetzt (das access_token läuft oft ab): 1 - Holen Sie sich ein Token aus dem Graph Explorer 2 - Fügen Sie es in meinen Code unten ein: var authToken = 'THE_CODE_I_GOT'; var feedQuery = 'graph.facebook.com/MY_PAGE_ID/feed'; var feedURL = feedQuery +'?access_token='+ authToken +'&callback=?'; $.getJSON(feedURL,function(data){ var d = data.data; für (i = 0; i <d.Länge; i ++) {d [i] .message? $ ("# list"). append ('<li>' + d [i] .message + '</ li>'): ''; // viele andere Sachen, du hast es}}); `
bsides
1
Sie können einen dauerhaften Token erhalten: stackoverflow.com/questions/17197970/…
Josh

Antworten:

269
  1. Wechseln Sie zum Graph API Explorer
  2. Wählen Sie Ihre App aus dem Dropdown-Menü
  3. Klicken Sie auf "Get Access Token".
  4. Wählen Sie die manage_pagesBerechtigung (möglicherweise benötigen Sie auch die user_eventsBerechtigung, nicht sicher)
  5. Greifen Sie jetzt auf die me/accountsVerbindung zu und kopieren Sie die Ihrer Seiteaccess_token
  6. Klicken Sie auf die ID Ihrer Seite
  7. Fügen Sie die Seiten access_tokenzu den GET-Feldern hinzu
  8. Rufen Sie die gewünschte Verbindung (zB: PAGE_ID/events)
ifaour
quelle
1
Auf diese Weise kann ich Verbindungen auf allen meinen Seiten aufrufen, indem ich nur ein Seitentoken von einer davon verwende. Ist das nicht falsch? Gibt es eine Möglichkeit, ein Token für nur eine bestimmte Seite zu erhalten, die auf den anderen Seiten nicht funktioniert?
andresp
112
Ich habe Berge bestiegen und Ozeane geschwommen, nur um diese Antwort zu finden. Danke dir.
IMB
15
Dieser Vorgang funktioniert nicht mehr, da das generierte Zugriffstoken abläuft, wenn Sie sich aus irgendeinem Grund abmelden.
Coneybeare
1
@coneybeare, beziehen Sie sich bitte auf dieses Dokument, wie Sie das Seitenzugriffstoken erweitern können
ifaour
1
Ich bekomme immer ein leeres Ergebnis. Macht es einen Unterschied, ob es sich um eine App-Seite handelt?
Max
16

Sehen Sie hier, ob Sie einer Facebook-App permanenten Zugriff auf eine Seite gewähren möchten (auch wenn Sie / der App-Besitzer abgemeldet sind):

http://developers.facebook.com/docs/opengraph/using-app-tokens/

"Ein App-Zugriffstoken läuft erst ab, wenn Sie das Anwendungsgeheimnis über Ihre App-Einstellungen aktualisieren."

Robin Layfield
quelle
6
Dies hilft nicht beim Abrufen von Ereignissen für eine eingeschränkte Seite.
Sinan
2
Ist das noch wahr?!
Jeromej
5

Die Dokumentation hierfür ist gut, wenn nicht ein wenig schwer zu finden.

Facebook Graph API - Seitentoken

Nach dem Initialisieren des fbgraph des Knotens können Sie Folgendes ausführen:

var facebookAccountID = yourAccountIdHere 

graph
.setOptions(options)
.get(facebookAccountId + "/accounts", function(err, res) {
  console.log(res); 
});

und erhalten Sie eine JSON-Antwort mit dem Token, das Sie abrufen möchten.

res.data[0].access_token
Anthony
quelle