我使用google drive api插入文本文件...
构建服务
function buildService() {
$DRIVE_SCOPE = 'https://www.googleapis.com/auth/drive';
$SERVICE_ACCOUNT_EMAIL = 'xxxx@developer.gserviceaccount.com';
if($_SERVER['HTTP_HOST'] == 'localhost')
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'xxxxxxxx-privatekey.p12';
else
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = $_SERVER['DOCUMENT_ROOT'].'/xxxxx-privatekey.p12';
$key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
$auth = new Google_AssertionCredentials(
$SERVICE_ACCOUNT_EMAIL,
array($DRIVE_SCOPE),
$key);
$client = new Google_Client();
$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
return new Google_DriveService($client);
}
检索文件
function retrieveAllFiles($service) {
$result = array();
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$files = $service->files->listFiles($parameters);
$result = array_merge($result, $files->getItems());
$pageToken = $files->getNextPageToken();
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
return $result;
}
创建实例并插入
$service = buildService();
$file = new Google_DriveFile();
$file->setTitle('My document');
$file->setDescription('A test document');
$file->setMimeType('text/plain');
$data = "contents";
$createdFile = $service->files->insert($file, array('data' => $data,'mimeType' =>'text/plain',));
print_r($createdFile);
echo '<br>------<br>';
检索文件
$ret = retrieveAllFiles($service);
echo '<pre>';
print_r($ret);
在第一个电话中我插入一个文件...
在第二个电话中我试图列出所有文件......
当我尝试列出时,我只能通过登录docs.google.com查看插入的文件,而不能看到我在驱动器中看到的其他文件。我已经有6个在线文件
根据我使用私钥和服务帐户电子邮件创建服务帐户的文档。
那么该文件将存储在哪里以及如何列出google驱动器根目录中的所有其他文件?
答案 0 :(得分:1)
您正在服务帐户所代表的应用程序拥有的帐户中插入文件。
如果您想在其他域用户的云端硬盘帐户中管理(插入/列出/ ...)文件,则必须执行域范围授权:https://developers.google.com/drive/delegation