2015-11-20 11 views
8

Sto cercando di estrapolare dati con l'API GRAPH in php. Non sto capendo bene i documenti sugli sviluppatori di Facebook. Anche io non riesco a trovare alcun esempio per aiutare entrambi. Vorrei avere il mio API dammi il seguente (tra il primo del mese e l'ultimo giorno del mese):API Facebook che utilizza insights php sdk

  • Nuova Piace
  • Visite
  • Reach organico (totali mensili)
  • Reach organico (per ogni giorno del mese)
  • Paid Reach (totali mensili)
  • Paid Reach (per ogni giorno del mese)
  • Costo da TE
  • fidanzamento
  • impressioni organici
  • impressioni a pagamento

ho ottenuto fino ad essere in grado di estrarre i dati, ma quando prova ad utilizzare le porzioni intuizioni che non mi dà i dati. Per esempio io ho questo:

// Sets the default fallback access token so we don't have to pass it to each request 
$fb->setDefaultAccessToken('{access-token}'); 

try { 
    $response = $fb->get('/{page-id}/insights/page_impressions?since=1443650400&until=1446246000', $accessToken); 
    $graphEdge = $response->getGraphEdge(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    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; 
} 

e restituisce questo:

Facebook\GraphNodes\GraphEdge Object 
(
    [request:protected] => Facebook\FacebookRequest Object 
     (
      [app:protected] => Facebook\FacebookApp Object 
       (
        [id:protected] => ******************* 
        [secret:protected] => ******************** 
       ) 

      [accessToken:protected] => ******************* 
      [method:protected] => GET 
      [endpoint:protected] => /{page-id}/insights/page_impressions?since=1443650400&until=1446246000 
      [headers:protected] => Array 
       (
        [Content-Type] => application/x-www-form-urlencoded 
       ) 

      [params:protected] => Array 
       (
       ) 

      [files:protected] => Array 
       (
       ) 

      [eTag:protected] => 
      [graphVersion:protected] => v2.5 
     ) 

    [metaData:protected] => Array 
     (
      [paging] => Array 
       (
        [previous] => https://graph.facebook.com/v2.5/{page-id}/insights/page_impressions?access_token=*******************&appsecret_proof=*******************&since=1440968400&until=1443564000 
        [next] => https://graph.facebook.com/v2.5/{page-id}/insights/page_impressions?access_token=*******************&appsecret_proof=*******************&since=1446159600&until=1448755200 
       ) 

     ) 

    [parentEdgeEndpoint:protected] => 
    [subclassName:protected] => 
    [items:protected] => Array 
     (
     ) 

) 

non vedo alcuna informazione in là che posso usare e che è solo per i page_impressions. Ho persino cambiato le date per iniziare il 31 luglio e terminare il 31 ottobre senza ottenere ancora nulla. Le mie due domande sono: 1. Che cosa ho fatto di sbagliato? 2. Come effettuare più chiamate per ottenere tutti i dati nell'elenco in alto?

Grazie in anticipo!

risposta

6
  1. What did I do wrong?

Poiché la risposta non buttare errore, assicurarsi che si risponde a questi requisiti:

  1. Per Approfondimenti metriche che non erano disponibili al pubblico (page_impressions, page_stories, ecc), il token di accesso deve avere il permesso read_insights.
  2. Le statistiche vengono generate solo per una pagina di Facebook che ha più di 30 persone a cui piace. (La tua pagina Facebook deve avere> 30 follower)

Per il punto 1, Facebook Graph Api non genera un errore se non si dispone dell'autorizzazione, semplicemente non ti darà i dati (perché non è pubblico). Per questo, è necessario applicare una richiesta di autorizzazione per read_insight per la tua app di Facebook e ottenere reviewed dal team di Facebook per l'approvazione.

Or (il-non-raccomandati vie) controllare: How to get a never expiring Facebook Page Access Token

Questo è il modo per mostrare i dati delle metriche utilizzando Graph Api Explorer:

  1. Accedere per Graph Api Explorer
  2. Fare clic su ' Ottieni token e quindi "Ottieni token di accesso utente"

    enter image description here

  3. Fare clic sulla scheda "Autorizzazioni estese" e selezionare read_insights e fare clic su Ottieni token di accesso.

    enter image description here

  4. concedersi i permessi richiesti.

  5. Ora inserire una query di prova nel campo query API grafico e fare clic su conferma:

    enter image description here

Vi si possono vedere le metriche dati. Se non è la generazione di tutti i dati, allora è perché il punto 2. (deve avere> 30 Like)

  1. How to make multiple calls to get all of the data in the list above?

Facebook permette di richiesta in batch, ad esempio utilizzando php-sdk:

$fb = new Facebook\Facebook([ 
    'app_id' => '{app-id}', 
    'app_secret' => '{app-secret}', 
    'default_graph_version' => 'v2.5', 
    ]); 

$fb->setDefaultAccessToken('user-access-token'); 

// Example : Get page impression 
$requestPageImpression = $fb->request('GET', '/{page-id}/insights/page_impressions?since=1443650400&until=1446246000"'); 

// Example : Get Organic page impressions 
$requestPageImpressionOrganic = $fb->request('GET', '{page-id}/insights/page_impressions_organic'); 

// Add more variable and API req, according to your list 
// $requestPageStories = $fb->request('GET','....'); 
// etc... 

$batch = [ 
    'page-impression' => $requestPageImpression, 
    'page-impression-organic' => $requestPageImpressionOrganic, 
    // add more for your list 
    ]; 

echo '<h1>Make a batch request</h1>' . "\n\n"; 

try { 
    $responses = $fb->sendBatchRequest($batch); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    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; 
} 

foreach ($responses as $key => $response) { 
    if ($response->isError()) { 
    $e = $response->getThrownException(); 
    echo '<p>Error! Facebook SDK Said: ' . $e->getMessage() . "\n\n"; 
    echo '<p>Graph Said: ' . "\n\n"; 
    var_dump($e->getResponse()); 
    } else { 
    echo "<p>(" . $key . ") HTTP status code: " . $response->getHttpStatusCode() . "<br />\n"; 
    echo "Response: " . $response->getBody() . "</p>\n\n"; 
    echo "<hr />\n\n"; 
    } 
} 
+0

sto ottenendo l'errore : "Class 'FacebookRequest' non trovata – kingcobra1986

+0

Sono andato a usare un ciclo per riempire una matrice 'master'. Sembrava funzionare con l'eccezione che non sto ottenendo le informazioni ma cercherò di fare domanda per una submission per read_insight – kingcobra1986

+1

@ kingcobra1986 Ho modificato la mia risposta in modo da poter vedere le tue metriche usando facebook graph api explorer e modificare l'esempio per la richiesta batch. – cwps

Problemi correlati