2016-08-09 148 views
3

Ich verwende Google Drive API v3, um auf das Laufwerk zuzugreifen, wie das Speicherkontingent.Google Drive API v3: Ungültige Feldauswahl

Und, egal was ich tue, bin ich mit diesem Fehler fest:

Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling **GET https://www.googleapis.com/drive/v3/about?fields=name**: (400) Invalid field selection name' in /var/webs/includes/google-api-php-client/src/Google/Http/REST.php:110 

Stack trace: 
#0 /var/webs/includes/google-api-php-client/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client)) 
#1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request)) 
#2 /var/webs/includes/google-api-php-client/src/Google/Task/Runner.php(174): call_user_func_array(Array, Array) 
#3 /var/webs/includes/google-api-php-client/src/Google/Http/REST.php(46): Google_Task_Runner->run() 
#4 /var/webs/includes/google-api-php-client/src/Google/Client.php(593): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request)) 
#5 /var/webs/includes/goog in /var/webs/includes/google-api-php-client/src/Google/Http/REST.php on line 110 


$googleClient = $this->getClient(); 
$googleClient->setAccessToken($accessToken); 
$googleDrive = new Google_Service_Drive($googleClient); 
//fields can be found here: https://developers.google.com/drive/v3/web/migration#fields 
$optParams = array(
    'fields' => 'name' 
); 
print_r($googleDrive->about->get($optParams)); 

Bitte überprüfen Sie, dass ich bin schon eine perfekte URL für den Anruf: GET https://www.googleapis.com/drive/v3/about?fields=name Aber es ist immer noch die Error. Gibt es einen Parameter, den ich vermisse?

Bitte, kann mir jemand sagen, ob es ein Problem mit der API selbst gibt?

Antwort

5

In v3 die Felder Definition geändert hat, sollte es

fields=storageQuota,user/displayName 

statt

fields=name 

Wie dem auch sei, ich habe keine exprience mit PHP.

Ref:
https://developers.google.com/drive/v2/reference/about https://developers.google.com/drive/v3/reference/about


Sie können selbst überprüfen, die alle Felder zur Verfügung: Vorerst die Felder diese waren ich gefunden: appInstalled, exportFormats, folderColorPalette, importFormats, kind, maxImportSizes, maxUploadSize, storageQuota & user.

Wenn Sie überprüfen müssen, welche Felder erlaubt sind, gehen Sie bitte auf https://developers.google.com/drive/v3/reference/about/get & do "Try It!".

+0

Sie haben Recht. Aber ich habe die Entdeckung selbst gemacht, indem ich bereits die v3 Doc-Seite benutzt habe und mein Konto dafür autorisiert habe. Ich habe verstanden, dass diese Felder erlaubt sind: ** GET https://www.googleapis.com/drive/v3/about?fields=appInstalled%2CexportFormats%2CfolderColorPalette%2CimportFormats%2Ckind%2CmaxImportSizes%2CmaxUploadSize%2CstorageQuota%2Cuser&key={YOUR_API_KEY} ** Also, es ist: 'appInstalled, exportFormats, folderColorPalette, importFormats, art, maxImportSizes, maxUploadSize, storageQuota & user'. Aber, wirklich danke für die Antwort. – rsharpy

+3

Was mir hier nicht klar war, waren die Felder, die sich auf das gesamte Antwortobjekt erstreckten. Ich habe 'files list' verwendet und dachte, dass das Feld scoping innerhalb der Datei resource angewendet wurde, aber nein. d. h. ich habe "id, size" verwendet, aber das ist fehlgeschlagen. "files/id, files/size" hat funktioniert. –

+0

@ChrisPrince Vielen Dank für diesen Kommentar. Google API ist außergewöhnlich schlecht dokumentiert und sie sollten sich schämen. Nein, auf der Seite, die den Parameter 'fields' enthält, wird Scoping erwähnt. –