【问题标题】:Google drive api add shared folder to my filesGoogle drive api将共享文件夹添加到我的文件中
【发布时间】:2018-01-30 14:21:27
【问题描述】:

我正在创建一个 PHP 脚本,它将在 Google Drive 帐户中创建文件夹。创建文件夹后,我将使用权限与我的谷歌应用域的其他用户共享它。

我已经成功创建了这部分,现在我需要添加一个可以通过 UI 完成的功能,但是我找不到通过 api 完成的方法: 我想将文件夹添加到用户的我的文件部分(可能在子文件夹中) 通过 UI 可以转到“与我共享的文件”部分,右键单击并选择“添加到我的文件”

我怎样才能以编程方式做到这一点?有办法吗?

编辑

我想在用户目录中以编程方式执行此操作

http://i.stack.imgur.com/II3Q6.png

目前,我可以在用户目录中创建文件和文件夹,只是我不知道如何添加从其他用户共享的文件夹

【问题讨论】:

  • 如果您想要我的文件部分中的文件夹。然后用户必须使用 Oauth2 对您进行身份验证。然后,您将能够直接在该驱动器帐户上创建文件夹。与我共享的文件部分是指其他人像现在一样拥有该文件。

标签: php google-drive-api shared-file


【解决方案1】:

我找到了问题的答案。我离开了这里,所以如果有人需要它;)

要添加用户A的共享文件夹,在用户B的“我的文件”中,您需要以用户B的身份访问驱动器api,获取共享文件夹(它与用户A实例中的ID相同) ,并将根目录或用户 B 驱动器内的文件夹添加为该文件夹的父级。

$about = $userBServiceInstance->about->get();
$userBRootFolderId = $about->getRootFolderId();

$newParent = new Google_Service_Drive_ParentReference();
$newParent->setId($userBRootFolderId);

$userBServiceInstance->parents->insert($folderId, $newParent);

【讨论】:

    【解决方案2】:

    我不知道我是否正确理解了您的问题,但为了以编程方式在 Google Drive 的根目录中创建一个文件夹,您可能需要使用以下代码。在 Google Drive 中,文件夹是一种特殊的文件类型(即application/vnd.google-apps.folder),有关详细信息,请参阅their API documentation

    $client = new Google_Client();
    // set various parameters, including name, key and secret
    
    $service = new Google_Service_Drive($client);
    $about = $service->about->get();
    $rootID = $about->getRootFolderId();
    
    createFolderIfNotExists($service, $rootID, "stackfolder");
    
    // creates a folder in the given rootID or returns the ID if it already exists
    function createFolderIfNotExists($service, $rootID, $foldername) {
        $search = "title='{$foldername}' AND '{$rootID}' in parents AND mimeType = 'application/vnd.google-apps.folder' AND trashed != true";
        $parameters = array("q" => $search);
    
        $files = $service->files->listFiles($parameters);
        if (!empty($files["items"])) {
            $folderID = $files["items"][0]->getId(); // the first element
        } else {
            // create a folder under root
            $file = new Google_Service_Drive_DriveFile();
            $file->setTitle($foldername);
            // To create new folder, we need to set the mime type
            $file->setMimeType('application/vnd.google-apps.folder');
            // set parent folder
            $parent = new Google_Service_Drive_ParentReference();
            $parent->setId($rootID);
            $file->setParents(array($parent));
            $folder = $service->files->insert($file);
            $folderID = $folder->getId();
        }
        return $folderID;
    }
    

    【讨论】:

    • 感谢您的回答。突然这不是我需要的(我已经创建了文件夹并与其他用户共享)我需要在他的“我的文件”目录中添加我与用户共享的文件夹
    【解决方案3】:

    通过将 addParents 添加到文件/文件夹来完成,使用 API V3 drive.files.update

    PATCH https://www.googleapis.com/drive/v3/files/FILE_ID?addParents=PARENT_ID&key={YOUR_API_KEY}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多