Undefined method of calling a Google Drive client

Using the example on the Google page , I installed the Google Client SDK through Composer. And try using the following codes to upload the file to Google Drive:

<?php header('Content-Type: text/plain'); require_once('vendor/autoload.php'); /** * Insert new file. * * @param Google_Service_Drive $service Drive API service instance. * @param string $title Title of the file to insert, including the extension. * @param string $description Description of the file to insert. * @param string $parentId Parent folder ID. * @param string $mimeType MIME type of the file to insert. * @param string $filename Filename of the file to insert. * @return Google_Service_Drive_DriveFile The file that was inserted. NULL is * returned if an API error occurred. */ function insertFile($service, $title, $description, $parentId, $mimeType, $filename) { $file = new Google_Service_Drive_DriveFile(); $file->setTitle($title); $file->setDescription($description); $file->setMimeType($mimeType); // Set the parent folder. if ($parentId != null) { $parent = new Google_Service_Drive_ParentReference(); $parent->setId($parentId); $file->setParents(array($parent)); } try { $data = file_get_contents($filename); $createdFile = $service->files->insert($file, array( 'data' => $data, 'mimeType' => $mimeType, )); // Uncomment the following line to print the File ID print 'File ID: %s' % $createdFile->getId(); return $createdFile; } catch (Exception $e) { print "An error occurred: " . $e->getMessage(); } } $client_email = ' drive-ocr-service@angelic-tracer-123606.iam.gserviceaccount.com '; $private_key = file_get_contents('key.p12'); $scopes = array( 'https://www.googleapis.com/auth/drive.file', //'https://www.googleapis.com/auth/drive.appdata', //'https://www.googleapis.com/auth/drive.apps.readonly' ); $credentials = new Google_Auth_AssertionCredentials( $client_email, $scopes, $private_key ); $client = new Google_Client(); $client->setAssertionCredentials($credentials); if ($client->getAuth()->isAccessTokenExpired()) { $client->getAuth()->refreshTokenWithAssertion(); } $service = new Google_Service_Drive($client); // https://developers.google.com/drive/v2/reference/files/insert#examples $response = insertFile($service, 'Test Image for OCR', 'Image for OCR', null, 'image/jpeg', 'test1.jpg'); if($response === NULL) { echo 'Upload failed' . PHP_EOL; } else { var_dump($response); } ?> 

The insertFile() function is copied from the sample page, but when I run the script, it shows:

Fatal error: call to undefined method Google_Service_Drive_DriveFile :: setTitle ()

Is there something I missed during installation?

+5
source share
1 answer

Instead of using $file->setTitle($title); use $file->setName($filename);

Edit 2

Insert() method is replaced with create() ,

Use create () instead of insert ()

So basically the new code will be (not verified),

  $createdFile = $service->files->create($file, array( 'data' => $data, 'mimeType' => $mimeType, )); 
+7
source

Source: https://habr.com/ru/post/1244552/


All Articles