Как установить разрешение кому-либо на API Drive v3 - PullRequest
1 голос
/ 07 февраля 2020

Итак, история такая: у меня есть веб-сайт обмена файлами на Google Диске, теперь, когда я его использую, файл, который копируется приложением, остается закрытым, как мне изменить разрешения, чтобы он стал кем-либо / опубликованным? c?

Приведенный ниже скрипт не работает для установки разрешений на копирование файлов кому-либо.

Это функция кода, которую я использовал:

function insertPermission($id, $token) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/drive/v3/files/$id/permissions?key=$token");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: application/json", "Authorization: Bearer $token", "{\"role\":\"reader\",\"type\":\"anyone\"}"));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "{\"role\":\"reader\",\"type\":\"anyone\"}");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
}

function copyfile($id, $token) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://www.googleapis.com/drive/v3/files/$id/copy?access_token=$token");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-length: 0", "Content-type: application/json", "Authorization: Bearer $token"));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    return json_decode($result, true);
}

Вот телефонный код:

$ruse = token("refresh", $_SESSION[email]);
$copy = copyfile($share[file][file_id], $ruse[access_token]);
insertPermission($copy[id], $ruse[access_token]);

if ($copy[id]) {

    echo " <
        meta http - equiv = \"refresh\" content=\"10;URL='https://docs.google.com/uc?id=$copy[id]'\" /> <
        div class = \"my-3 p-3 bg-white rounded shadow\"> <
        div style = \"padding: 50px 15px;text-align: center;background-color: #fff;\"> <
        h3 > Start Download < /h3><br / >
        Click < a href = \"https://docs.google.com/uc?id=$copy[id]\" target=\"_blank\">here</a> for download. <
        /div> <
        /div>";

}

1 Ответ

1 голос
/ 07 февраля 2020

Ответ:

Вы можете использовать метод Permissions: create [1] API Google Диска, чтобы создать новое Разрешение с параметрами вам требуется.

Дополнительная информация:

Отправка Permissions: create запроса к API привода с идентификатором файла, для которого вы будете устанавливать sh для установки разрешения. разрешение. После получения идентификатора файла, который был вновь создан вашим приложением, вы можете сделать запрос вместе с телом запроса, содержащим тип разрешения.

Пример запроса cURL:

curl --request POST \
  'https://www.googleapis.com/drive/v3/files/<YOUR-FILE-ID-GOES-HERE>/permissions?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"role":"reader","type":"anyone"}' \
  --compressed

Строка data '{"role":"reader","type":"anyone"}' устанавливает права доступа таким образом, что любой пользователь, имеющий ссылку, может просматривать файл, но не редактировать. Вы можете прочитать больше о ресурсе Permissions [2] в документации по Drive API, в которой указаны допустимые значения type и role.

. Я надеюсь, что это полезно для вас!

Ссылки:

  1. Google Drive API - Permissions: create
  2. Google Drive API - Permissions ресурс
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...