5
Google's pageに記載されている例に基づいて、GoogleクライアントSDKをComposer経由でインストールしました。そして、Googleドライブにファイルをアップロードするには、次のコードを使用しようとしている:Googleドライブクライアントを呼び出す未定義のメソッド
<?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's 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 = '[email protected]';
$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);
}
?>
insertFile()
機能は、例えばページからコピーしたが、私は、スクリプトを実行すると、それが表示されます。
Fatal error: Call to undefined method Google_Service_Drive_DriveFile::setTitle()
ですセットアップ中に私が見逃したことは何ですか?
例が更新されていない、またはライブラリが更新されているとしますか?更新されたサンプルはどこにありますか? '$ createdFile = $ service-> files-> insert()'の行に、未定義のメソッドGoogle_Service_Drive_Files_Resource :: insert()を呼び出します。 – Raptor
Insert()メソッドは次のように置き換えられます。 create()、ここで見つけることができますhttps://developers.google.com/drive/v3/reference/files/create#request –
作品は魅力的です。ありがとう。 – Raptor