2016-03-29 16 views
2

Ich habe Probleme mit dem Google https://github.com/google/google-api-php-client. Alles, was ich tun möchte, ist einige Details aus den Suchergebnissen mit einer benutzerdefinierten Suchmaschine (CSE) zu erhalten. Die gleiche Sache dauerte 30 Minuten mit der Bing-API, aber ich kann das nicht zum Laufen bringen. Der API-Aufruf funktioniert, ich kann die Ergebnisse des zurückgegebenen Objekts nicht abrufen. Anhand der Beispiele aus der obigen Quelle funktioniert die simple-query.php mit der Bücher-API (ein nützliches Beispiel!) Und ich kann Details der Suchergebnisse z.Google API PHP-Client - Suchergebnis Details abrufen

echo "<h3>Results Of Call:</h3>"; 
foreach ($results as $item) { 
    echo $item['selfLink'],"<br /><br/> \n"; 
    echo $item['etag'],"<br /> \n"; 
    echo $item['volumeInfo']['title'],"<br /> \n"; 
    echo $item['volumeInfo']['authors']['0'],"<br /> \n"; 
} 

Dies ist mit meinem API-Schlüssel und CSE-ID.

Wenn ich jedoch versuche, CSE zu verwenden, kann ich das Ergebnisobjekt, das zurückgegeben wird, nicht verwenden. So ändern Sie die einfache Suche Beispiel:

<?php 

include_once "templates/base.php"; 
echo pageHeader("Custom Image Search"); 

//API request 
set_include_path("../src/" . PATH_SEPARATOR . get_include_path()); 
require_once 'Google/Client.php'; 
require_once 'Google/Service/Customsearch.php'; 

//Create the client 
$client = new Google_Client(); 
$client->setApplicationName("Client_Library_Examples"); 
$apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // Enter your API key 
// Warn if the API key isn't changed. 
if ($apiKey == '<YOUR_API_KEY>') { 
    echo missingApiKeyWarning(); 
} 
$client->setDeveloperKey($apiKey); 

$service = new Google_Service_Customsearch($client); 

//Do the query 
$query = 'donkey'; 
$optParams = array(
     'imgSize' => 'large', 
     'searchType' => 'image', 
     'num' => '5', 
     'safe' => 'medium', 
     'cx' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', //Added your cx or search engine ID here, see https://cse.google.com/cse/ 
     ); 
$results = $service->cse->listCse($query, $optParams); 



//Iterate over the results 
echo "<h3>Results Of Call:</h3>"; 
foreach ($results as $item) { 
    echo "Test <br/>"; 
    echo $item['link'], "<br /> \n"; 
} 

Dies gibt nur nichts zurück.

Mit var_dump auf $ Ergebnisse kann ich sehen, dass es die Ergebnisse der Suche zurückgibt (ja ich suche nach Bildern von Eseln, nur als ein Beispiel!).

Aber die Bücher Beispiel verwendet wird, kann ich sehen, dass es 6 Ergebnisse, indem Sie:

echo "Results count: " .count($results); 

Aber dies zu tun mit dem cse Beispiel gibt 0. So wenig überraschend ich über nichts bin iterieren.

Also, kann mir jemand sagen, wie ich tatsächlich die Ergebnisse mit dem PHP-Client und CSE bekommen kann?

Dank

Antwort

0

OK das ist, wie ich das am Ende tat, machte es nur in ein Array und dann verwendet array_walk_recursive:

//Making the returned object into an array 
$array = (array) $results; 
function array_print($item, $key) 
{ 
    if($key=='link'){ 
     echo $item ."<br>"; 
    } 
} 

array_walk_recursive($array, 'array_print'); 
1

Sie die Methoden in der API verwenden, sollten einbezogen Ergebnisse abrufen und Artikeldetails:

foreach($results->getItems() as $k=>$item){ 
     echo $item->getCacheId()."<br/>"; 
     echo $item->getDisplayLink()."<br/>"; 
     echo $item->getFileFormat()."<br/>"; 
     echo $item->getFormattedUrl()."<br/>"; 
     echo $item->getHtmlFormattedUrl()."<br/>"; 
     echo $item->getHtmlTitle()."<br/>"; 
     echo $item->getImage()."<br/>"; 
     echo $item->getKind()."<br/>"; 
     echo json_encode($item->getLabels())."<br/>"; 
     echo $item->getLink()."<br/>"; 
     echo $item->getMime()."<br/>"; 
     echo json_encode($item->getPagemap())."<br/>"; 
     echo $item->getSnippet()."<br/>"; 
     echo $item->getTitle()."<br/>"; 
    } 
+0

Es wäre hilfreicher, auf die API-Dokumente zu verweisen, als zu sagen "verwende die Methoden, die in der API enthalten sind". Ich habe gerade [Google_Service_Customsearch_Result] (https://github.com/google/google-api-php-client-services/blob/master/src/Google/Service/Customsearch/Result.php), [Google_Collection] (https : //github.com/google/google-api-php-client/blob/master/src/Google/Collection.php) und [Google_Model] (https://github.com/google/google-api-php- client/blob/master/src/Google/Model.php), ohne "getItems()" zu finden. Ich nehme an, dies ist verfügbar, weil Google_Collection 'Iterator' implementiert. – doub1ejack

Verwandte Themen