当前位置: 首页 > 知识库问答 >
问题:

服务帐户-上传的PPTX文件在我的Google驱动器中没有显示

司空通
2023-03-14
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

require __DIR__ . '/vendor/autoload.php';


putenv('GOOGLE_APPLICATION_CREDENTIALS=credentials.json');

$client = new Google\Client();

if (getenv('GOOGLE_APPLICATION_CREDENTIALS')) {
  // use the application default credentials
  $client->useApplicationDefaultCredentials();
} else {
  echo missingServiceAccountDetailsWarning();
  return;
}

$client->setApplicationName("Client_Library_Examples");
//$client->setScopes(Google_Service_Drive::DRIVE_METADATA_READONLY);
$client->addScope("https://www.googleapis.com/auth/drive");

$service = new Google_Service_Drive($client);


//Insert a file
$file = new Google_Service_Drive_DriveFile();
$file->setName('test-1.pptx');
$file->setDescription('A test document');
$file->setMimeType('application/vnd.openxmlformats-officedocument.presentationml.presentation');

$data = file_get_contents('test-1.pptx');

$createdFile = $service->files->create($file, array(
      'data' => $data,
      'mimeType' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
      'uploadType' => 'multipart'
    ));

echo '<pre>';

var_dump($createdFile);

// Print the names and IDs for up to 10 files.
$optParams = array(
  'pageSize' => 10,
  'fields' => 'nextPageToken, files(id, name)'
);
$results = $service->files->listFiles($optParams);

var_dump($results);

共有1个答案

富钧
2023-03-14

服务帐户是虚拟用户。他们有自己的谷歌驱动器账户。当你上传一个文件,默认情况下,它将转到服务帐户谷歌驱动器帐户。

现在如果你想上传一个文件到你的个人驱动器帐户。你所能做的就是与服务帐户共享你的google drive帐户上的一个文件夹,基本上是使用服务帐户的电子邮件地址,其中有@的那个,并通过html" target="_blank">web应用程序与它共享目录,就像你会与任何其他用户一样。

现在,服务帐户将立即有权访问它,这被称为预授权。通过预授权服务帐户,将不需要用户交互来访问该文件夹。

您似乎正在试图创建一个新文件,所有您需要做的是在上传元数据之前在元数据中设置文件的父文件夹。

 $file->setParents('FolderIdFromYourDrive');

做一个文件。首先列出服务帐户驱动器帐户,如果你想知道文件夹是什么,或者你可以只看url栏的顶部。

如果您的应用程序需要访问一些静态数据,那么服务帐户是很好的。这可以通过将文件放在驱动器上,然后授予服务帐户访问这些文件的权限来实现。服务帐户很棒,因为它们是预先授权的,您不需要同意屏幕来访问私人用户数据。

 类似资料:
  • 我们正在使用服务帐户从服务器上传文件,它已经达到其存储配额限制。所有文件都被添加到另一个用户创建的文件夹下(一个@gmail.com帐户,存储配额为100 Gb),但上传的所有文件都归服务帐户所有。 请注意,我们没有真正的用户,我们只是使用谷歌驱动器存储目的。 目前,我们无法上传任何更多的文件使用服务帐户。 null 谢谢

  • 我正在使用java google drive api上传文件。我的问题是上传文件后,我没有从我的谷歌驱动器找到上传的文件。我如何在网络浏览器中查看文件?有什么想法请帮帮我? 我的java代码是:

  • 我尝试的是下面的,但不是工作 从谷歌REST链接,它显示的例子如下,如何运行这个?

  • 在开发人员控制台中为特定应用程序用户(例如user@mydomain.com)创建的服务帐户是否可以访问该应用程序用户的文档?如果在中设置帐户,如下所示: 我收到以下错误: 当我没有设置时,我可以访问驱动器,但我只能看到一个文档“如何开始使用驱动器”。 如果我在服务帐户上创建文档,是否有任何方法可以将文档的所有权转移到我的应用程序帐户,而不启用域范围的委托?