Ich muss einige Beiträge von einer Facebook-Seite ziehen und sie auf meiner Website anzeigen. Ich schaue mir die Facebook Graph API an, aber ich habe ein wenig Probleme, die Dokumentation und alle Arten von Tutorials scheinen davon auszugehen, dass ich einen Login-Flow einrichten werde, um den Benutzer zu bitten, sich auf meiner Website anzumelden. Aber das brauche ich nicht. Ich brauche meine serverseitige Anwendung, um mit Facebook authentifiziert zu werden und regelmäßig neue Beiträge zu holen.Authentifizieren mit Facebook Graph API
Ich fand heraus, dass es möglich sein sollte, ein langlebiges Token mit Hilfe von Page-Token zu bekommen, aber im Moment kann ich nicht einmal herausfinden, wie man sich mit regulären kurzlebigen Token authentifizieren kann.
Also habe ich eine Test-App eingerichtet, um eine App-ID und ein Geheimnis zu erhalten, und bin zum Facebook Graph API Explorer gegangen, um das Authentifizierungstoken für den Benutzer zu erhalten, den ich zum Erstellen der App verwendet habe.
Hier ist die grundlegende Code ich die Verbindung Graph Api zu testen, bin mit:
(...)
$fb = new \Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $app_secret,
'default_graph_version' => '2.8',
'default_access_token' => $app_access_token
]);
try {
$response = $fb->get('/me');
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$me = $response->getGraphUser();
Wenn ich meinen Code ausführen bekomme ich diese Meldung:
Graph returned an error: Invalid appsecret_proof provided in the API argument
Ich habe Triple-geprüft dass $app_id
und $app_secret
die Werte sind, die ich beim Erstellen der App angegeben habe, und ich habe mein Zugriffs-Token dreimal geprüft (mit meinem persönlichen Benutzer-Token sowie dem Seiten-Token, das ich über den Graph-API-Explorer abrufen konnte).
fand ich eine andere SO Thread darauf hindeutet, dass ich manuell einen appsecret Beweis erzeugen soll, also tat ich dies:
$appsecret_proof= hash_hmac('sha256', $app_access_token, $app_secret);
$fb = new \Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $appsecret_proof,
'default_graph_version' => '2.8',
'default_access_token' => $app_access_token
]);
Ich bin nicht sicher, ob ich die $appsecret_proof
zum app_secret
oder wie ich verwenden soll passieren soll es. Ich bekomme immer noch den gleichen Fehler mit dem obigen Code.
im Allgemeinen müssen Sie sich nicht mit dem appsecret_proof befassen, wenn Sie den offiziellen sdk verwenden. Wenn nicht, müssen Sie es zu jedem API-Aufruf hinzufügen. – luschn
Ja, wie ich aus der Dokumentation verstehe, ist es nicht obligatorisch, aber angesichts der Fehlermeldung, dass die 'appsecret_proof' ist ungültig, ich denke, es explizit helfen könnte. Aber ich bekomme die gleiche Fehlermeldung mit oder ohne. – funkylaundry