2015-08-01 6 views
5

Graph API: 2,4
PHP SDK: "facebook/php-sdk-v4": "~ 5.0"FB Graph API di query non funziona in PHP SDK

mi piacerebbe ottenere dettagli su un pagina tramite PHP e l'SDK PHP. utilizzando la query:

$response = $fb->get('/' . $sPageID . '?fields=posts', $_SESSION['facebook_access_token']); 

restituisce i messaggi con una buona quantità di dati. Ma sfortunatamente valori errati:
Il limite 25 per Mi piace, ad esempio, si applica qui. Quindi, anche se un post dovrebbe avere 150 mi piace, se faccio un count ($post['likes']) ne ottengo solo 25 come risultato.

Così ho provato a cambiare la mia strategia e secondo il grafico Explorer questo sembra funzionare bene:

Ora non posso ottenere questo trasformato in mia chiamata PHP. ricevo timeout e

Fatal error: Uncaught exception 'Facebook\Exceptions\FacebookSDKException' with message 'Unable to convert response from Graph to a GraphNode because the response looks like a GraphEdge. Try using GraphNodeFactory::makeGraphEdge() instead.' in ...

Questo è possibile con una sola query in PHP o devo eseguire più query, uno per ogni post?

risposta

2

ho trovato questo answer, e se a causa della fine del punto di questa richiesta è un GraphEdge, in modo da provare questo:

// Get basic info on the user from Facebook. 
try { 
    $response = $fb->get('/' . $sPageID . '?fields=posts', $_SESSION['facebook_access_token']); 

} catch (Facebook\Exceptions\FacebookSDKException $e) { 
    dd($e->getMessage()); 
} 
$getGraphEdge = $response->getGraphEdge(); 

Spero che questo aiuto.

Saluti.

+1

Sembra che non possa usare 'getGraphEdge' ma' getGraphNode' - questo dipende dal parametro '/ posts'? – Chris

0

Utilizzare getGraphList(), se si verificano problemi con getGraphEdge().

+1

Questa risposta sarebbe meglio se spiegassi la differenza tra i due, preferibilmente con un link alla documentazione dove esiste la spiegazione. – Mark

+0

'getGraphList()' è per le versioni precedenti di PHP SDK e 'getGraphEdge()' è per i più recenti. Aggiornamento – yedort

+0

: usa 'getBody()'. – yedort