Скопируйте публичный файл gdrive в мой аккаунт с помощью curl - PullRequest
0 голосов
/ 12 февраля 2019

Я попытался скопировать общедоступные файлы gdrive в свою учетную запись с помощью API Gdrive с помощью простого сценария ps1 и инструментов unix для окон.(Свернуться).Сработал все необходимые токены и начал копировать, скачивать, удалять файлы, которые я копировал ранее.Проблема в том, что я обнаружил, что общедоступные общие файлы имеют разные права доступа

"Возможности": {"canCopy": true, "canEdit": false}, "editable": false, "copyable": true,

как эта ссылка, например:

drive.google.com / open? id = 1ArIfiMSmBdlZQUm1cgHi8RRjhSCh8Rym

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

"functions": {"canCopy": false , "canEdit": false}, "editable": false, "copyable": false ,

drive.google.com / open? Id = 1cHAsF0D8zEp3LbVB4LmEQbJ3LdU8Cj7i

Я получаю:

"reason": "forbidden",
"message": "Insufficient permissions for the specified parent.",
"locationType": "other",
"location": "parent.permissions" }],

" код": 403," message ":" Недостаточно прав для указанного родителя. "}}

Но в моем браузере я могу щелкнуть правой кнопкой мыши по файлу и просто сделать копию.Так что, кажется, просто невозможно по запросам API.Но как я могу сделать это с помощью запросов curl / http (с сохраненным файлом cookie или каким-то образом)?

$ UID = 'clientID.apps.googleusercontent.com'

$skey = 'clientsecret'

$ readtoken = (Get-Content "$ PSScriptRoot \ refreshtoken.txt")

Это для создания нового маркера доступа из сохраненного файла refreshtoken

$token = curl -d "client_id = $ UID & client_secret = $ skey & refresh_token = $ readtoken & grant_type = refresh_token" https://accounts.google.com/o/oauth2/token |grep access_token

$ string = $ token.TrimStart (""access_token": `" ")

$ cleantoken = $ string.TrimEnd (" `", ")

$ drivefile = Read-Host -Prompt 'Поместите сюда свою ссылку' $ driveID = $ drivefile.Substring (33)

$ LINKS = curl --request POST "https://www.googleapis.com/drive/v2/files/$driveID/copy" --header«Authorization: Bearer $ cleantoken» --header «Accept: application / json» --header «Content-Type: application / json» --data "{}" --compressed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...