2015-09-30 7 views
5

Ich muss Nachrichten auf einer Facebook-Seite posten. Speziell möchte ich über cron posten.Erhalten Sie Seitenzugriffstoken mit Facebook API 5.0 PHP

Hier ist, was die API-Dokumentation sagen:

Page Access Token – These access tokens are similar to user access tokens, except that they provide permission to APIs that read, write or modify the data belonging to a Facebook Page. To obtain a page access token you need to start by obtaining a user access token and asking for the manage_pages permission. Once you have the user access token you then get the page access token via the Graph API.

Wie ich einen Benutzerzugriff und Seitenzugriffstoken ohne Seiten Rückruf erhalten können? Ist das möglich?

+0

Versuchen Sie, es von Cron oder PHP zu tun? –

+0

@NateBarbettini sogar mit Cron kann es PHP sein, dies schließt einander nicht aus ...? –

+0

@AxelAmthor Fair genug, das habe ich vergessen. –

Antwort

5

Was Sie brauchen es ein Extended Page Token, es ist für immer gültig. Sie erhalten eine so:

  • Autorisieren mit der manage_pages Erlaubnis (und publish_pages, wenn Sie als Seite stellen später), eine Benutzer-Token
  • Erweitern Benutzer-Token
  • Verwenden /me/accounts?fields=access_token mit der Extended zu bekommen Benutzer-Token eine Liste aller Seiten mit erweiterten Seite Tokens zu bekommen - oder /page-id?fields=access_token verwenden, um einen erweiterten Page-Token für eine bestimmte Seite

Informationen zu bekommen über alle Tokens und wie die Benutzer-Token zu verlängern:

0

Ich habe nur JavaScript-Code, aber sobald Sie ein Zugriffs-Token haben, erhalten Sie möglicherweise die Seiten, die von dem angegebenen Benutzer verwaltet werden können. Dadurch wird eine Seite Zugriffstoken für jeden von ihnen enthalten:

jQuery.ajax({type: "GET", 
       url: "https://graph.facebook.com/v2.2/me/accounts?access_token=" + userToken, 
       async: false, 
       data: jsonRequest, 
       dataType: "json", 
       cache: false, 
       success: function(data) 
       { 

Die Daten zurück gegeben ist wie:

{ 
    "data": [ 
    { 
     "access_token": "CAACni8TcBB0B...cZBJfwZDZD", 
     "category": "Computers/Technology", 
     "name": "abc", 
     "id": "...", 
     "perms": [ 
     "ADMINISTER", 
     "EDIT_PROFILE", 
     "CREATE_CONTENT", 
     "MODERATE_CONTENT", 
     "CREATE_ADS", 
     "BASIC_ADMIN" 
     ] 
    }, 
    { 
     "access_token": "CAA...ZDZD", 
     "category": "App Page", 
     "name": "xyz", 
     "id": "....", 
     "perms": [ 
     "ADMINISTER", 
     "EDIT_PROFILE", 
     "CREATE_CONTENT", 
     "MODERATE_CONTENT", 
     "CREATE_ADS", 
     "BASIC_ADMIN" 
     ] 
    } 
    ], 

access_token Ihrer Seite Token ist. Sie können die obige Anfrage leicht in PHP umwandeln.

+0

Vielen Dank für Ihre Antwort. Ich verstehe, wie ich das Seitenzugriffstoken bekommen kann. Aber wie kann ich den Benutzer Token bekommen? –

+0

Think i find: 1) Erhalte einen Token für den Zugriff von: https://developers.facebook.com/tools/explorer/ 2) Erhalte einen langen Live-Zugriffstoken von https://graph.facebook.com/oauth/ access_token? grant_type = fb_exchange_token & client_id = & client_secret = & fb_exchange_token = 3) Erhalten Sie ein permanentes Zugriffs-Token mit Ihrem Vorgängerlink –

2

PHP API V5

Der Code unten für mich kratzt nach 24 Stunden Kopf gearbeitet .... hoffen, dass dies durch die Art und Weise hilft, wenn Sie diese brauchen Code, um zu arbeiten, sollten Sie die ersten beiden Schritte

  1. durchgeführt haben sollten Auf facebook anmelden Ich benutzte getRedirectLoginHelper
  2. Set Session-Variable mit dem empfangenen Benutzerzugriffstoken auf dem Rückruf $_SESSION['fb_access_token'] = (string) $accessToken;

$fbApp = new Facebook\FacebookApp('xxx', 'xxx', 'v2.7'); 
$fb  = new Facebook\Facebook(array(
    'app_id' => 'xxx', 
    'app_secret' => 'xxx', 
    'default_graph_version' => 'v2.7' 
)); 
$requestxx = new FacebookRequest(
    $fbApp, 
    $_SESSION['fb_access_token'],//my user access token 
    'GET', 
    '/{page-id}?fields=access_token', 
    array('ADMINISTER') 
); 
$responset = $fb->getClient()->sendRequest($requestxx); 
$json   = json_decode($responset->getBody()); 
$page_access = $json->access_token; 

//posting to page 
$requesty = new FacebookRequest(
    $fbApp, 
    $page_access , 
    'POST', 
    '/{page-id}/feed?message=Hello fans YYYYYYYYYYYYYYY' 
); 
$response = $fb->getClient()->sendRequest($requesty); 
var_dump($response); 
+0

Dies war die Antwort, nach der ich gesucht habe! Vielen Dank. –

+0

Funktioniert nicht, Fataler Fehler: Die Klasse "FacebookRequest" wurde nicht in /home/wwwdj4yo/public_html/wp-content/plugins/fb-reviews/classes/_import.php in Zeile 24 gefunden. Bitte versuchen Sie es mit Antworten bevor es veröffentlicht wird, da es andere Menschen davor bewahrt, ihre Zeit damit zu verschwenden, Ratschläge von Leuten zu bekommen, die nicht wissen, wovon sie reden. –

+1

Bitte habe verstanden, dass ich eine PHP-Datei nicht in einem wp-Plugin verwendet habe. Dies funktionierte für mich im Jahr 2016, und eine andere Person im Februar 2017, also kopiere bitte den Code und kopiere deinen Code! – Fara

1

Sie Datei kann auf diese Weise die Seite Token erhalten:

$response = $fb->get('/'.$pageId.'?fields=access_token', (string)$accessToken); 
$json = json_decode($response->getBody()); 
$page_token = $json->access_token; 
$response = $fb->post('/'.$pageId.'/feed', $fbData, $page_token); 
Verwandte Themen