Таким образом, в основном документация в Google Developer не обновляется, чтобы соответствовать новой версии API.
Вот мой код:
<?php
require_once 'autoload.php';
$client = new Google_Client ();
// Get your credentials from the console
$client->setClientId ( 'CLIENT_ID' );
$client->setClientSecret ( 'CLIENT_SECRET' );
$client->setRedirectUri ( 'urn:ietf:wg:oauth:2.0:oob' );
$client->setScopes ( array (
'https://www.googleapis.com/auth/drive'
) );
$service = new Google_Service ( $client );
$authUrl = $client->createAuthUrl ();
// Request authorization
print "Please visit:\n$authUrl\n\n";
print "Please enter the auth code:\n";
$authCode = trim ( fgets ( STDIN ) );
// Exchange authorization code for access token
$accessToken = $client->authenticate ( $authCode );
$client->setAccessToken ( $accessToken );
// Insert a file
$file = new Google_Service_Drive_DriveFile ();
$file->setTitle ( 'My document' );
$file->setDescription ( 'A test document' );
$file->setMimeType ( 'text/plain' );
$data = file_get_contents ( 'document.txt' );
$createdFile = $service->files->insert ( $file, array (
'data' => $data,
'mimeType' => 'text/plain'
) );
echo $createdFile;
?>
И это ошибка, которую я получаю:
PHP Notice: Undefined property: Google_Service::$files in D:\DATA\java\php workspace\Google Drive api test\quickstart.php on line 34
PHP Fatal error: Call to a member function insert() on a non-object in D:\DATA\java\php workspace\Google Drive api test\quickstart.php on line 34
Это проблемная строка кода:
$createdFile = $service->files->insert
Если у вас есть идеи, стоит ли мне импортировать какой-то другой класс или что-то еще, пожалуйста, сообщите. Спасибо.
Я боролся с тем же отсутствием новой документации, после того, как я все понял, я сделал простой пример того, как Google oAuth, загрузка дисков и создание папок в Google Drive SDK, чтобы помочь другим. Вы можете раскошелиться на GitHub: https://github.com/numsu/google-drive-sdk-api-php-insert-file-parent-example
Удачи!
Я думаю, что у вас нет объекта с именем $ files, который я могу сказать. Создайте новый экземпляр $ files, который соответствует тому, что вы пытаетесь сделать, и затем выполните вставку. Надежды, которые помогают.
Если это v3, вам нужно использовать create. Вставка недоступна в v3
$createdFile = $service->files->create( $file, array (
'data' => $data,
'mimeType' => 'text/plain',
'uploadType' => 'media'
) );