2015-09-30 18 views
5

Ho bisogno di inviare messaggi su una pagina di Facebook. Nello specifico voglio pubblicare tramite cron.Ottieni token di accesso alla pagina con Facebook API 5.0 PHP

Ecco quello che la documentazione API dicono:

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.

Come posso ottenere un accesso utente e la pagina di token di accesso senza una pagina richiamata? È possibile?

+0

Stai provando a farlo da cron o PHP? –

+0

@NateBarbettini anche con cron può essere PHP, questo non si escludono a vicenda ...? –

+0

@AxelAmthor Abbastanza giusto, me ne sono dimenticato. –

risposta

5

Quello che ti serve è un token pagina estesa, è valido per sempre. È possibile ottenere uno come questo:

  • Autorizza con il permesso manage_pages (e publish_pages se si desidera pubblicare come pagina successiva), per ottenere un utente token
  • Estendere l'utente Token
  • Utilizzare /me/accounts?fields=access_token con l'esteso utente Token per ottenere un elenco di tutte le pagine con la pagina Gettoni estesi - o utilizzare /page-id?fields=access_token per ottenere un completo Page token per una specifica pagina

Informazioni su tutti i token e come estendere il token dell'utente:

0

Ho solo codice JavaScript, ma una volta ottenuto un token di accesso, è possibile ottenere le pagine che possono essere ammesse dall'utente specificato. Questo contiene un token di accesso pagina per ciascuno di essi:

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) 
       { 

I dati riportati indietro è come:

{ 
    "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 è la vostra pagina di token. Puoi trasformare facilmente la richiesta sopra in PHP.

+0

Grazie mille per la tua risposta. Capisco come posso ottenere il token di accesso alla pagina. Ma come posso ottenere il token dell'utente? –

+0

pensi che io trovo: 1) Ottenere un token di accesso da: https://developers.facebook.com/tools/explorer/ 2) Ottenere un lungo token di accesso diretta da https://graph.facebook.com/oauth/ access_token? grant_type = fb_exchange_token & client_id = & client_secret = & fb_exchange_token = 3) Ottenere un token di accesso permanente con il tuo link precedente –

2

PHP API V5

Il seguente codice ha funzionato per me dopo 24 ore di grattarsi la testa .... Spero che questo aiuti a proposito, se avete bisogno di questo codice per funzionare dovresti aver completato i primi due passi

  1. Dovrebbe avere login to facebook ho usato getRedirectLoginHelper
  2. variabile Set sessione con il token di accesso utente ha ricevuto la chiamata di nuovo depositare $_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

Questa è stata la risposta che cercavo! Grazie. –

+0

Non funziona, genera errore irreversibile: classe 'FacebookRequest' non trovata in /home/wwwdj4yo/public_html/wp-content/plugins/fb-reviews/classes/_import.php on line 24. Si prega di provare effettivamente le risposte fuori prima di postare, in quanto salva altre persone dal perdere tempo a prendere consigli da persone che non sanno di cosa stanno parlando. –

+1

Vi preghiamo di comprendere che ho controllato utilizzando un file php non all'interno di un wp-plugin, questo ha funzionato per me di nuovo nel 2016, e un'altra persona su 2017 febbraio, quindi, invece di copiare incollare il codice si prega di controllare la documentazione e confrontare il codice! – Fara

1

È possibile ottenere la pagina di token in questo modo:

$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); 
Problemi correlati