Google drive api добавить общую папку в мои файлы

Я создаю PHP-скрипт, который будет создавать папки в учетной записи Google Диска. Как только папка будет создана, я затем поделюсь ею, используя разрешения, с другими пользователями моего домена приложений Google.

Я успешно создал эту часть, теперь мне нужно добавить функцию, которую можно выполнить через пользовательский интерфейс, но я не могу найти способ сделать это через API: я хочу добавить папку в раздел «Мои файлы» пользователей (возможно, в подпапке) Через пользовательский интерфейс можно перейти в раздел «Файлы, которыми я поделился», щелкнуть правой кнопкой мыши и выбрать «добавить в мой файл».

Как я могу сделать это программно? Есть способ?

РЕДАКТИРОВАТЬ

Я хочу сделать это программно в каталоге пользователей

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

на данный момент я могу создать файл и папку в каталоге пользователей, только я не знаю, как добавить папку, доступную другим пользователям


person Mix Kira    schedule 15.10.2015    source источник
comment
Если вам нужна папка в разделе мои файлы. Затем пользователь должен будет аутентифицировать вас с помощью Oauth2. Тогда вы сможете создать папку прямо в учетной записи диска. Раздел «Файлы, которыми мне поделились», — это когда кто-то еще владеет файлом, как сейчас.   -  person DaImTo    schedule 15.10.2015


Ответы (3)


Я нашел ответ на свой вопрос. Я оставил здесь, так что если кому-то это нужно ;)

Чтобы добавить общую папку пользователя A, в «мои файлы» пользователя B вам необходимо получить доступ к API-интерфейсу диска, используя от имени пользователя B, получить общую папку (у нее тот же идентификатор, что и у пользователя A) и добавить в качестве родителя этой папки - корневой каталог или папка на пользовательском диске B.

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

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

$userBServiceInstance->parents->insert($folderId, $newParent);
person Mix Kira    schedule 19.10.2015

Я не знаю, правильно ли я понял ваш вопрос, но для того, чтобы программно создать папку в корне Google Диска, вы можете использовать следующий код. На Google Диске папка — это файл особого типа (то есть application/vnd.google-apps.folder), см. их документацию по API для получения дополнительной информации.

$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;
}
person Jan    schedule 15.10.2015
comment
Спасибо за ответ. Внезапно это не то, что мне нужно (я создал папку и поделился ею с другими пользователями). Мне нужно добавить папку, которой я поделился с пользователем, в его каталог моих файлов. - person Mix Kira; 15.10.2015

это делается путем добавления addParents к файлу/папке с помощью API V3 drive.files.update

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