谷歌驱动器api不知道它保存文件的位置但是在获取时它显示已保存但不显示其他文件

时间:2013-02-11 18:50:25

标签: google-drive-api

我使用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);
  1. 在第一个电话中我插入一个文件...

  2. 在第二个电话中我试图列出所有文件......

  3. 当我尝试列出时,我只能通过登录docs.google.com查看插入的文件,而不能看到我在驱动器中看到的其他文件。我已经有6个在线文件

  4. 根据我使用私钥和服务帐户电子邮件创建服务帐户的文档。

  5. 那么该文件将存储在哪里以及如何列出google驱动器根目录中的所有其他文件?

1 个答案:

答案 0 :(得分:1)

您正在服务帐户所代表的应用程序拥有的帐户中插入文件。

如果您想在其他域用户的云端硬盘帐户中管理(插入/列出/ ...)文件,则必须执行域范围授权:https://developers.google.com/drive/delegation