Facebook: permanentes Seitenzugriffstoken?

193

Ich arbeite an einem Projekt, dessen Datenquellen Facebook-Seiten sind. Es importiert regelmäßig einige Daten ohne GUI. Dann verwenden wir eine Web-App, um die Daten anzuzeigen, die wir bereits haben.

Nicht alle Informationen sind öffentlich. Das heißt, ich muss einmal auf die Daten zugreifen und sie dann behalten. Ich kenne den Prozess jedoch nicht und habe noch kein gutes Tutorial dazu gefunden. Ich glaube, ich brauche eine access_token, wie kann ich sie Schritt für Schritt vom Benutzer bekommen? Der Benutzer ist Administrator einer Facebook-Seite. Muss er der Seite eine unserer FB-Apps hinzufügen?

EDIT: Danke @phwd für den Tipp. Ich habe ein Tutorial erstellt, wie man ein permanentes Seitenzugriffstoken erhält, auch wenn es offline_accessnicht mehr vorhanden ist.

EDIT: Ich habe gerade herausgefunden, dass es hier beantwortet wird: Langlebiges FB-Zugriffstoken für den Server zum Abrufen von FB-Seiteninformationen

Vlasec
quelle
2
Mögliches Duplikat des langlebigen FB-Zugriffstokens für den Server zum
Abrufen von
Es scheint so. Ich habe einen besseren Titel, er hat eine detailliertere Frage und wir haben beide ungefähr die gleiche Antwort akzeptiert.
Vlasec

Antworten:

638

Nach den Anweisungen in der Dokumentation zu den erweiterten Seitentoken von Facebook konnte ich ein Seitenzugriffstoken erhalten, das nicht abläuft.

Ich empfehle, für alle diese Schritte den Graph API Explorer zu verwenden, sofern nicht anders angegeben.

0. Erstellen Sie eine Facebook-App

Wenn Sie bereits eine App haben , fahren Sie mit Schritt 1 fort.

  1. Gehen Sie zu Meine Apps .
  2. Klicken Sie auf "+ Neue App hinzufügen".
  3. Richten Sie eine Website-App ein.

Sie müssen die Berechtigungen nicht ändern. Sie benötigen lediglich eine App, die nicht verschwindet, bevor Sie mit Ihrem Zugriffstoken fertig sind.

1. Holen Sie sich das User Short-Lived Access Token

  1. Wechseln Sie zum Graph API Explorer .
  2. Wählen Sie die Anwendung aus, für die Sie das Zugriffstoken erhalten möchten (im Dropdown-Menü "Anwendung", nicht im Menü "Meine Apps").
  3. Klicken Sie auf "Token abrufen"> "Benutzerzugriffstoken abrufen".
  4. Aktivieren Sie im Popup auf der Registerkarte "Erweiterte Berechtigungen" die Option "Verwaltungsseiten".
  5. Klicken Sie auf "Get Access Token".
  6. Gewähren Sie Zugriff von einem Facebook-Konto, das Zugriff auf die Verwaltung der Zielseite hat. Beachten Sie, dass, wenn dieser Benutzer den Zugriff verliert, das endgültige, nie ablaufende Zugriffstoken wahrscheinlich nicht mehr funktioniert.

Das Token, das im Feld "Zugriffstoken" angezeigt wird, ist Ihr kurzlebiges Zugriffstoken.

2. Generieren Sie ein langlebiges Zugriffstoken

Befolgen Sie diese Anweisungen aus den Facebook-Dokumenten und senden Sie eine GET-Anfrage an

https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} & client_secret = {app_secret} & fb_exchange_token = {short_lived_token}

Geben Sie die ID und das Geheimnis Ihrer App sowie das kurzlebige Token ein, das im vorherigen Schritt generiert wurde.

Sie können den Graph API Explorer nicht verwenden . Aus irgendeinem Grund bleibt es bei dieser Anfrage hängen. Ich denke, das liegt daran, dass die Antwort nicht JSON ist, sondern eine Abfragezeichenfolge. Da es sich um eine GET-Anfrage handelt, können Sie einfach die URL in Ihrem Browser aufrufen.

Die Antwort sollte folgendermaßen aussehen:

{"access_token": " ABC123 ", "token_type": "bearer", "expires_in": 5183791}

"ABC123" ist Ihr langlebiges Zugriffstoken. Sie können es zur Überprüfung in den Access Token Debugger einfügen. Unter "Läuft ab" sollte es so etwas wie "2 Monate" haben.

3. Benutzer-ID abrufen

Stellen Sie mithilfe des langlebigen Zugriffstokens eine GET-Anforderung an

https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}

Das idFeld ist Ihre Konto-ID. Sie benötigen es für den nächsten Schritt.

4. Holen Sie sich ein permanentes Seitenzugriffstoken

Stellen Sie eine GET-Anfrage an

https://graph.facebook.com/v2.10/ {account_id} / accounts? access_token = {long_lived_access_token}

Die JSON-Antwort sollte ein dataFeld enthalten, unter dem sich ein Array von Elementen befindet, auf die der Benutzer Zugriff hat. Suchen Sie das Element für die Seite, von der aus Sie das permanente Zugriffstoken erhalten möchten. Das access_tokenFeld sollte Ihr permanentes Zugriffstoken haben. Kopieren Sie es und testen Sie es im Access Token Debugger . Unter "Läuft ab" sollte "Nie" stehen.

Krapfen
quelle
14
Facebook hat das durcheinander gebracht, so dass es nicht mehr funktioniert. :-( Nach Schritt 1.5 oben (Klicken auf die Schaltfläche "Zugriffstoken abrufen") wird im folgenden Dialogfeld eine rote Warnung mit der Meldung "Zur Überprüfung der Anmeldung senden - Einige der folgenden Berechtigungen wurden nicht für die Verwendung durch Facebook genehmigt" sowie a angezeigt Vorhängeschloss mit dem Text "Dies lässt die App nicht auf Facebook posten" wird gleichzeitig zur gleichen Zeit angezeigt. Daher sollte zwischen Schritt 1.5 und 1.6 oben ein neuer Schritt eingefügt werden, der lautet: "Machen Sie viel mühsames Sh * t mit Ihrer App." dann zur Überprüfung einreichen, dann beten und warten. ":-( Kennt jemand einen Weg, um dies für eine reine Test-App zu umgehen?
QuestionOverflow
10
Für alle, die zum letzten Schritt gelangen und der Browser gerade zurückkehrt: message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100 Gehen Sie zum FB Access Token Debugger und testen Sie Ihr long_lived_access_token. Konsequent habe ich gesehen, dass nach ein paar Minuten, wenn Sie zurückgehen und das long_lived_access_token erneut überprüfen, der FB Access Token Debugger anzeigt, dass dieses Token permanent ist (verfallen: nie)
AdjunctProfessorFalcon
14
Ich schwöre, wenn ich diese Antwort nicht gelesen hätte, würde ich immer noch meinen Kopf mit einem kurzlebigen Zeichen gegen die Wand schlagen ... Schade, dass der letzte Teil nicht funktioniert ... Ich bekomme den (#100) Tried accessing nonexisting field (accounts) on node type (Page)Fehler ... Schritt 5 kann nicht fortgesetzt werden ... Trotzdem, danke ... LE: Lesen Sie den letzten Teil der Antwort von @Vlasec. Sie können das permanente Zugriffstoken erhalten, indem Sie / {pageId}? Fields = access_token & access_token = {long_lived_access_token} abfragen. Das Problem wurde behoben.
Mujnoi Gyula Tamas
15
Musste dies für den letzten Schritt verwenden, um mein permanentes Zugriffstoken zu erhalten, da es heißt, dass "Konten" nicht existieren, selbst für v2.7:https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
Reado
5
Im letzten Schritt erhalte ich die folgende Ausnahme {"Fehler": {"Nachricht": "Syntaxfehler \" Erwartetes Ende der Zeichenfolge anstelle von "?". \ "Bei Zeichen 11: access_toke \ u200c \ u200bn" , "type": "OAuthException", "code": 2500, "fbtrace_id": "A8 + gtSaShIO"}} Jeder weiß, wie man es löst ????
Lucy
89

Hier ist meine Lösung, die nur den Graph API Explorer und den Access Token Debugger verwendet :

  1. Graph API Explorer:
    • Wählen Sie Ihre App aus dem Dropdown-Menü oben rechts
    • Wählen Sie "Benutzerzugriffstoken abrufen" aus der Dropdown-Liste (Feld "Zugriffstoken rechts") und wählen Sie die erforderlichen Berechtigungen aus
    • Benutzerzugriffstoken kopieren
  2. Access Token Debugger:
    • Fügen Sie den kopierten Token ein und drücken Sie "Debug".
    • Drücken Sie auf "Zugriffstoken erweitern" und kopieren Sie das generierte langlebige Benutzerzugriffstoken
  3. Graph API Explorer:
    • Fügen Sie das kopierte Token in das Feld "Zugriffstoken" ein
    • Stellen Sie eine GET-Anfrage mit "PAGE_ID? Fields = access_token".
    • Suchen Sie das permanente Seitenzugriffstoken in der Antwort (Knoten "access_token").
  4. (Optional) Access Token Debugger:
    • Fügen Sie den permanenten Token ein und drücken Sie "Debug".
    • "Läuft ab" sollte "Nie" sein

(Getestet mit API Version 2.9-2.11, 3.0-3.1)

rauben
quelle
3
Es gibt keine "Extend Access Token" -Taste zum Drücken. Vielleicht haben sie es herausgenommen.
Cesar Bielich
4
Ich sehe die Schaltfläche "Erweitern"
Eduardo
2
Nach dem Erweitern des Zugriffstokens (Schritt 2) und dem erneuten Debuggen sollte es niemals ablaufen. Sie können nur die Schritte 3 und 4 bestehen.
daniel_serretti
1
Vielen Dank für diese Antwort, die viel einfacher zu verstehen ist als die große oben. Es war sehr hilfreich.
Paul Laffitte
2
Oh, Alter, du brennst! Vielen Dank! Ich habe so viel Zeit verschwendet, um diese Option zu finden, weil ich eine App nicht richtig debuggen konnte!
Killuminati
11

Zusätzlich zu den empfohlenen Schritten in der Vlasec- Antwort können Sie Folgendes verwenden:

  • Graph API Explorer zum Ausführen der Abfragen, z/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER
  • Zugriffstoken-Debugger , um Informationen zum Zugriffstoken abzurufen.
Chuycepeda
quelle
3
Das funktioniert nicht mehr. Der Token dauert nur eine Stunde
Flashsnake
@flashsnake hast du das tatsächlich auf v2.8 getestet? Der Token-Debugger zeigt Expires Never
Bizmate
Ich erinnere mich nicht. Ich habe es vielleicht getestet.
Flashsnake
11

Ich habe ein PHP-Skript erstellt, um es einfacher zu machen. Erstellen Sie eine App . Wählen Sie im Graph API Explorer Ihre App aus und erhalten Sie ein Benutzertoken mit der Berechtigung "manage_pages" und "Publish_pages". Die ID Ihrer Seite finden Sie unten auf der Info-Seite. Füllen Sie die Konfigurationsvariablen aus und führen Sie das Skript aus.

<?php
$args=[
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
];

echo generate_token($args);

function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
    foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}
dw1
quelle
1
+1 Nur ausprobiert und unter all diesen teilweise abwertenden Antworten wirkt es Wunder! Ich mag diese Antwort, weil zukünftige Änderungen mit ein wenig Bearbeitung hier und da einfach sind.
Siddhant Rimal
Entschuldigung, ich durfte diese Antwort nicht bearbeiten. Für Graph API 2.9 habe ich stattdessen eine andere Antwort geschrieben .
Siddhant Rimal
Scheint, als hätten sie mit 2.9 etwas geändert, weil keines dieser Beispiele mehr funktioniert
Cesar Bielich
10

Eine weitere PHP-Antwort, um das Leben leichter zu machen. Aktualisiert für Facebook Graph API 2.9 . Einfach auffüllen und laden.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
    if($r->id==$args['pageid']) $finaltoken=$r->access_token;
    return $finaltoken;
}
?>

Nachtrag: (Alternative)

2.9 Graph ab, können Sie viel von der Mühe, sich einen langen Zugang durch einfaches Anklicken Token überspringen Zugriffstoken Extend am unteren Rand des Access - Token - Debugger - Tool nach einem kurzen Zugriffstoken gedebuggt haben. Mit Informationen über pageidund bewaffnet longlivedtoken, führen Sie das folgende PHP aus, um einen permanenten Zugriffstoken zu erhalten.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'longlivedtoken'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>

Obwohl der zweite Code Ihnen viel Ärger erspart, empfehle ich, den ersten PHP-Code auszuführen, es sei denn, Sie haben es eilig, da er die Seiten-ID und die Benutzer-ID überprüft. Der zweite Code funktioniert nicht, wenn Sie versehentlich ein Benutzertoken auswählen.

Danke an dw1 und Rob

Siddhant Rimal
quelle
Die Schaltfläche "Zugriffstoken erweitern" ist nicht vorhanden. Fehlt mir etwas?
Cesar Bielich
@CesarBielich: Sie müssen zuerst ein Short Access Token debuggen. Es wird unter den Ergebnissen angezeigt, wenn Sie ein kurzes App-Token debuggen. Da Sie es nicht sehen können, müssen Sie ein Benutzerzugriffstoken debuggt haben. Beachten Sie, dass diese Antwort nicht für die Verwendung von Zugriffstoken gilt. Es kann nur ein App-Zugriffstoken verwendet werden. Benutzerzugriffstoken können nicht permanent sein. Sie können bis zu langen Token generiert werden.
Siddhant Rimal
1
@CesarBielich Ich denke du verwirrst hier etwas. Sie können Zugriffstoken für Benutzer, Apps und Seiten erstellen. Sie müssen eine von Ihnen erstellte App anstelle des Graph API ExplorerFelds "Anwendung" auswählen , bevor Sie ein Token anfordern können.
Siddhant Rimal
@CesarBielich: Verwenden Sie die erste Methode, wenn die zweite für Sie zu verwirrend ist. Sie füllen einfach die Eingabefelder im ersten und alles geschieht automatisch :)
Siddhant Rimal
Tut mir leid, dass ich einen anderen Beitrag kommentiert habe, den ich letzte Nacht gemacht habe lol. Ja, aus irgendeinem Grund konnte ich deine nicht zum Arbeiten bringen und mich zu einem nie ablaufenden Token machen. Ich musste das v2.9beim zweiten Anruf entfernen und das hat bei mir funktioniert. Wierd
Cesar Bielich
6

Ich habe diese Schritte ausprobiert: https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer

Holen Sie sich ein permanentes Seitenzugriffstoken

  • Gehen Sie zum Graph API Explorer
  • Wählen Sie Ihre App in Anwendung
  • Fügen Sie das langlebige Zugriffstoken in das Zugriffstoken ein
  • Wählen Sie neben Zugriffstoken die Seite aus, für die Sie ein Zugriffstoken wünschen. Das Zugriffstoken wird als neue Zeichenfolge angezeigt.
  • Klicken i , um die Eigenschaften dieses Zugriffstokens anzuzeigen
  • Klicken Sie erneut auf die Schaltfläche "In Access Token Tool öffnen", um das Tool "Access Token Debugger" zu öffnen und die Eigenschaften zu überprüfen

Ein Tipp, es nur für mich gearbeitet , wenn die Seite Sprache ist Englisch .

Fabian
quelle
1
DIESER TYP!!! 5 virtuelle Biere. Dies ersetzt Schritt 5 der genehmigten Antwort. Grafikversion 2.8
Root -
1
Ich habe Wochen damit verschwendet, die Facebook-API nutzen zu können. Es ist bis heute das verwirrendste und inkonsistenteste Zeichen, das mir begegnet ist. Diese Lösung funktioniert immer noch perfekt. Oktober 2017
user919426
4

Wenn Sie nur Seitendaten anfordern, können Sie ein Seitenzugriffstoken verwenden. Sie müssen den Benutzer nur einmal autorisieren, um das Benutzerzugriffstoken zu erhalten. Verlängern Sie die Gültigkeit auf zwei Monate und fordern Sie dann das Token für die Seite an. Dies alles wird in Szenario 5 erläutert . Beachten Sie, dass das erworbene Seitenzugriffstoken nur so lange gültig ist, wie das Benutzerzugriffstoken gültig ist.

phwd
quelle
Entschuldigung, vielleicht war ich nicht klar genug. Ich habe über Token gelesen. Ich muss nur lernen, wie ich den Benutzer um Erlaubnis bitten und ein Token an meine App übertragen kann. Es scheint, dass ich eine Facebook "App" erstellen muss, deren einziger Zweck darin besteht, nach Berechtigungen zu fragen. Ist das richtig?
Vlasec
1
@Viasec Richtig, der einzige Weg, um ein Zugriffstoken zu erhalten, ist über eine Anwendung, wie hier erläutert. Developers.facebook.com/docs/facebook-login
phwd
Danke, ich muss es irgendwie ignoriert haben, ich nahm an, dass es irgendwo im APIs-Bereich ist, was falsch war. Ich werde mir das ansehen, ich hoffe es beantwortet meine Frage.
Vlasec
4

Während ich den permanenten Zugriffstoken erhielt, folgte ich den oben genannten 5 Schritten, wie Donut erwähnte. Im fünften Schritt wird beim Generieren eines permanenten Zugriffstokens jedoch das langlebige Zugriffstoken (das 2 Monate gültig ist) zurückgegeben, kein permanentes Zugriffstoken (das niemals abläuft). Was mir aufgefallen ist, dass die aktuelle Version der Graph API V2.5 ist. Wenn Sie versuchen, das permanente Zugriffstoken mit V2.5 abzurufen, erhalten Sie ein langlebiges Zugriffstoken. Versuchen Sie, einen API-Aufruf mit V2.2 durchzuführen (wenn Sie die Version im Grafik-API-Explorer nicht ändern können, klicken Sie auf den API-Aufruf https: //graph.facebook.com/v2.2/ {account_id} / accounts? access_token = {long_lived_access_token} in der neuen Registerkarte mit V2.2), dann erhalten Sie das permanente Zugriffstoken (das niemals abläuft).

Baji Shaik
quelle
Das Zurücksetzen von API-Versionen, um Ergebnisse zu erzielen, wird in Zukunft nur zu mehr Arbeit führen, insbesondere da die API-Version nach einer bestimmten Zeit abläuft.
SlickRemix
es gibt null zurück :( Wie bekommen wir Seitenzugriffstoken?
Nancy thakkar
3

Zusätzlich zu den genannten Methoden ist zu erwähnen, dass Sie für Server-zu-Server-Anwendungen auch diese Form des permanenten Zugriffstokens verwenden können: app_id | app_secret Diese Art von Zugriffstoken wird als App-Token bezeichnet. Es kann im Allgemeinen verwendet werden, um die Graph-API aufzurufen und öffentliche Knoten in Ihrem Anwendungs-Back-End abzufragen. Es wird hier erwähnt: https://developers.facebook.com/docs/facebook-login/access-tokens

azec-pdx
quelle
1
Ermöglicht es jeglichen Zugriff auf Seiten? Ich denke, das tut es nicht und in diesem Fall beantwortet es die Frage nicht wirklich.
Vlasec
@ Vlasec Es ermöglicht Ihnen, auf Kommentare zu einem öffentlichen Beitrag
zuzugreifen
1
Während das für einige vielleicht reicht, beantwortet es die Frage nicht.
Vlasec
2

Dank @donut habe ich es geschafft, das nie ablaufende Zugriffstoken in JavaScript zu erhalten.

// Initialize exchange
fetch('https://graph.facebook.com/v3.2/oauth/access_token?grant_type=fb_exchange_token&client_id={client_id}&client_secret={client_secret}&fb_exchange_token={short_lived_token}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Get the user data
    fetch(`https://graph.facebook.com/v3.2/me?access_token=${json.access_token}`)
    .then((data) => {
        return data.json();
    })
    .then((userData) => {
        // Get the page token
        fetch(`https://graph.facebook.com/v3.2/${userData.id}/accounts?access_token=${json.access_token}`)
        .then((data) => {
            return data.json();
        })
        .then((pageToken) => {
            // Save the access token somewhere
            // You'll need it at later point
        })
        .catch((err) => console.error(err))
    })
    .catch((err) => console.error(err))
})
.catch((err) => {
    console.error(err);
})

und dann habe ich das gespeicherte Zugriffstoken so verwendet

fetch('https://graph.facebook.com/v3.2/{page_id}?fields=fan_count&access_token={token_from_the_data_array}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Do stuff
})
.catch((err) => console.error(err))

Ich hoffe, dass jemand diesen Code kürzen kann, weil er etwas chaotisch ist, aber es war der einzige Weg, an den ich denken konnte.

Vladimir Jovanović
quelle
2

Wenn Sie die Facebook-App haben, können Sie es mit App-ID und App-Geheimnis versuchen.

Mögen :

access_token={your-app_id}|{your-app_secret}

Das Token muss nicht häufig geändert werden.

Niko Jojo
quelle
1

Anwendungsanforderungslimit erreicht (# 4) - FB API v2.1 und höher

Diese Antwort führte mich zur "ultimativen Antwort für uns" und ist daher sehr verwandt, so dass ich sie hier anhänge. Obwohl es mit dem oben Gesagten zusammenhängt, ist es anders und es scheint, dass FB den Prozess etwas vereinfacht hat.

Unsere Freigabezählungen auf unserer Website funktionierten nicht mehr, als FB die API auf Version 2.1 umstellte. In unserem Fall hatten wir bereits eine FB-App und verwendeten NICHT den FB-Login. Wir mussten also ein FB APP Token besorgen , um die neuen Anfragen zu stellen. Dies ist der 23. August 2016.

  1. Gehen Sie zu: https://developers.facebook.com/tools/explorer
  2. Wählen Sie die API-Version aus, verwenden Sie GET und fügen Sie Folgendes ein:

    /oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials
    

    Sie sollten Ihre App-ID und Ihr App-Geheimnis von Ihrer App-Seite abrufen. Hauptseite der FB Apps-Entwickler

  3. Führen Sie die Diagrammabfrage aus und Sie werden sehen:

    {
       "access_token": "app-id|app-token",
       "token_type": "bearer"
    }
    

    Wo

    "App-ID"
    und
    "App-Token"
    wird Ihre App-ID von Ihrer FB-App-Seite und die generierte FB-App HASH sein, die Sie gerade erhalten haben.

  4. Als nächstes testen Sie Ihr neues APP-Zugriffstoken: FB Access Token-Tester

  5. Sie sollten sehen, indem Sie die einfügen

    "App-Token"
    in den Token-Tester ein einzelnes App-basiertes Token ohne Ablaufdatum / -zeit.

In unserem Fall verwenden wir den FB js sdk, also haben wir unseren Aufruf so geändert (bitte beachten Sie, dass dies NUR die Anzahl der Freigaben und nicht die Anzahl der Freigaben und Kommentare wie früher kombiniert) :

FB.api(
    '/','GET',{
    // this is our FB app token for our FB app 
        access_token: FBAppToken,
        "id":"{$shareUrl}","fields":"id,og_object{ engagement }"
}

Dies funktioniert jetzt ordnungsgemäß. Dies erforderte viel Suche und einen offiziellen Fehlerbericht mit FB, um zu bestätigen, dass wir anfangen müssen, tokenisierte Anfragen an die FB-API zu stellen. Nebenbei habe ich darum gebeten, dass sie (FB) einen Hinweis auf den Fehlercode (# 4) hinzufügen, der die tokenisierte Anforderung erwähnt.

Ich habe gerade einen weiteren Bericht von einem unserer Entwickler erhalten, dass unsere FB-Kommentaranzahl aufgrund des neuen Bedarfs an Token-Anforderungen ebenfalls fehlerhaft ist, daher werde ich dies entsprechend aktualisieren.

wittmason
quelle
1
Es war immer der Benutzer der App, der sich anmeldete und der App den Zugriff gewährte. Auf jeden Fall scheint dies kein Seitenzugriffstoken zu erstellen, daher denke ich, dass dies keine gültige Antwort auf die Frage ist. Interessant - vielleicht machen Sie selbst eine Frage / Antwort?
Vlasec
1

Viele dieser Beispiele funktionieren nicht, ich bin mir nicht sicher, ob es an 2.9V liegt, aber ich habe mir den Kopf geschlagen. Wie auch immer, ich habe die @ dw1-Version genommen und sie mit Hilfe von @KFunk-Video ein wenig modifiziert und dies für mich für 2.9 zum Laufen gebracht. Hoffe das hilft.

$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r = json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}
Cesar Bielich
quelle
Nettes Snippet, aber bei dieser Frage geht es nicht darum, wie man es in PHP macht, sondern darum, wie man die API selbst verwendet, was auch in Java oder .NET möglich ist. Zum Beispiel musste ich es in Java tun. Pseudocode oder eine Schritt-für-Schritt-Anleitung wären für diejenigen, die kein PHP verwenden, nützlicher.
Vlasec
2
@Vlasec Ich würde argumentieren, dass dieses PHP-Snippet jedem Pseudocode ziemlich nahe kommt und sehr einfach zu verstehen ist. Casar verwendet nur einige APIs, die bereits von Facebook bereitgestellt werden. Der Rest des Materials ist selbsterklärend.
Siddhant Rimal
0

Ab April 2020 liefen meine zuvor permanenten Seitentoken zwischen 1 und 12 Stunden ab. Ich habe angefangen, Benutzertoken mit der manage_pagesErlaubnis zu verwenden, um das vorherige Ziel zu erreichen (Abfragen der Ereignisse einer Seite). Diese Token scheinen dauerhaft zu sein.

Ich habe ein Python-Skript basierend auf den Informationen in diesem Beitrag erstellt, der unter github.com/k-funk/facebook_permanent_token gehostet wird, um zu verfolgen, welche Parameter erforderlich sind und welche Methoden zum Abrufen eines permanenten Tokens funktionieren.

KFunk
quelle
-1

Ich habe diese Antwort gefunden , die sich auf dieses Tool bezieht, das wirklich sehr geholfen hat.

Ich hoffe, diese Antwort ist noch gültig, wenn Sie dies lesen.

Bambus
quelle
OK. Funktioniert die Antwort von Donut noch oder braucht es einen zusätzlichen Schritt?
Vlasec