如何浏览项目 google 驱动器中的文件

How to browse files from projects google drive

我已经在 google 控制台中使用服务类型凭据创建了项目。我已经下载了p12密钥文件,然后写了插入文件的示例代码来测试它:

<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
require_once "google-api-php-client/src/contrib/Google_Oauth2Service.php";

$scopes = array('https://www.googleapis.com/auth/drive');
$accountEmail = 'SECRET';
$accountP12FilePath = './key.p12';


$key = file_get_contents($accountP12FilePath);
$auth = new Google_AssertionCredentials($accountEmail, $scopes, $key);
$client = new Google_Client();
$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
$service = new Google_DriveService($client);

$file = new Google_DriveFile();
$file->setTitle('Test Title');
$file->setDescription('test description');
$parent = new Google_ParentReference();
$file->setParents(array($parent));


$createdFile = $service->files->insert($file, array(
    'data' => 'test data',
    'mimeType' => 'text/plain'
));

var_dump($createdFile);
?>

它转储 Google_DriveFile 包含许多 url 的对象。其中一些,例如 'downloadUrl'、returns 401 未经授权的错误。当我尝试 'alternateLink' 时,它显示 google 包含我需要访问的信息的驱动器页面,以及请求访问和切换帐户的按钮。

它还说我目前登录了我的帐户,该帐户用于创建项目,并且在 google 控制台页面的项目权限页面上可见。

如何访问属于我在脚本中使用的项目的驱动器?

终于找到了解决方案,它缺少对文件的权限。值得注意的是,将权限对象传递给 $file 对象(在插入之前)不起作用。我必须通过将已创建的文件 ID 和权限对象传递给 $service->permissions->insert 方法来插入权限,就像那样:

$permission = new Google_Permission();
$permission->setValue('PERSONAL.ACCOUNT@gmail.com');
$permission->setType('user');
$permission->setRole('writer');
$service->permissions->insert($createdFile->getId(), $permission);

我仍然无法真正编辑此文件。当我用 URL

打开文件时
$createdFile->getAlternateLink();

然后我不得不用 google 文档重新打开那个文件。将文件复制到我的个人帐户,然后我只能编辑文件的那个副本,而不是基本文件本身。

我不知道是否有办法让这些文件真正可编辑,但是 我转到了保管箱,因为 google 驱动器 API 及其文档 SUX.