2017-01-16 3 views
3

Also im Grunde habe ich versucht, this aus der zweiten Antwort, aber es kommt mit einem FehlerBigQuery PHP Call to undefined Methode Google_Client :: setAssertionCredentials()

Fatal error: Call to undefined method Google_Client::setAssertionCredentials() in

Hier ist mein Code

require_once 'xxx/vendor/autoload.php'; 
public function createGClient() { 
    define("CLIENT_ID", "xxx.apps.googleusercontent.com"); 
    define("SERVICE_ACCOUNT_NAME","[email protected]"); 
    define("KEY_FILE",'xxx'); 

    define("PROJECT_ID","xxx"); 
    define("DATASET_ID","xxx"); 
    define("TABLE_ID","xxx"); 

    $this->client = new Google_Client(); 
    $this->client->setApplicationName("Test"); 

    $key = file_get_contents(KEY_FILE); 
    $this->client->setAssertionCredentials(
    Google_Auth_AssertionCredentials(SERVICE_ACCOUNT_NAME, 
array('https://www.googleapis.com/auth/bigquery'), $key, "notasecret")); 
    $this->client->setClientId(CLIENT_ID); 
    $this->service = new Google_Service_Bigquery($this->client); 
} 

public function runQuery() { 
    // To see the a list of tables 
    print_r($this->service->tables->listTables(PROJECT_ID, DATASET_ID)); 

    // To see details of a table 
    print_r($this->service->tables->get(PROJECT_ID, DATASET_ID, TABLE_ID)); 

    // To query a table 
    $jobs = $this->service->jobs; 
    $query = new Google_Service_Bigquery_QueryRequest(); 
    $query->setQuery("SELECT * FROM wherever;"); 
    $response = $jobs->query(PROJECT_ID, $query); 
    print_r($response); 
} 

ich schon installiere alles aus dem guide/doc. Kann mir jemand helfen, weil ich alles versucht habe und es nicht funktioniert, vielen Dank.

Antwort

1

Verwenden Sie diese Version der PHP-Bibliothek nicht mehr, da sie veraltet ist und keine Dokumentation enthält.

Es gibt einen neueren, der unten verlinkt ist, funktioniert mit der Notwendigkeit, die Standard-Anmeldeinformationen des Dienstkontos einzurichten, siehe Zeilen mit putenv und useApplicationDefaultCredentials(). Dies ist ein Arbeits Code, den ich die Bibliothek haben mit https://github.com/google/google-api-php-client Sie benötigen eine Dienstkonto Schlüsseldatei von der Konsole zu erhalten: https://console.cloud.google.com/iam-admin/serviceaccounts/

composer.json

{ 
    "require": { 
     "google/cloud": "^0.13.0", 
     "google/apiclient": "^2.0" 
    } 
} 

PHP-Datei

# Imports the Google Cloud client library 
use Google\Cloud\BigQuery\BigQueryClient; 
use Google\Cloud\ServiceBuilder; 

$query="SELECT repository_url, 
     repository_has_downloads 
FROM [publicdata:samples.github_timeline] 
LIMIT 10"; 
$client = new Google_Client(); 
putenv('GOOGLE_APPLICATION_CREDENTIALS='.dirname(__FILE__) . '/.ssh/dummyname-7f0004z148e1.json');//this can be created with other ENV mode server side 
$client->useApplicationDefaultCredentials(); 

$builder = new ServiceBuilder([ 
       'projectId' => 'edited', 
     ]); 

     $bigQuery = $builder->bigQuery(); 

     $job = $bigQuery->runQueryAsJob($query); 
     $info=$job->info(); 
//  print_r($info); 
//  exit; 
     $queryResults = $job->queryResults(); 

     /*$queryResults = $bigQuery->runQuery(
      $query, 
      ['useLegacySql' => true]);*/ 

     if ($queryResults->isComplete()) 
     { 
      $i = 0; 
      $rows = $queryResults->rows(); 

      foreach ($rows as $row) 
      { 
       $i++; 

       $result[$i] = $row; 
      } 
     } 
     else 
     { 
      throw new Exception('The query failed to complete'); 
     } 

     print_r($result); 
+0

"Schwerwiegender Fehler: Klasse 'Google \ Cloud \ ServiceBuilder' nicht gefunden in" Habe ich etwas übersehen? – xharmas

+0

Stellen Sie sicher, dass beide Composer-Bibliotheken ordnungsgemäß installiert sind. Und natürlich müssen Sie 'vendor/autoload.php' importieren, damit der Komponist funktioniert. – Pentium10

+0

Vielen Dank dafür, ich habe alles neu installiert und es funktioniert wirklich gut. – xharmas

Verwandte Themen