После загрузки файла в GoogleDrive, я могу получить fileId
из ответа, затем я передаю fileId
следующей функции:
public function createShareLink($fileId, $accessToken){
$ch = curl_init();
$options = [
CURLOPT_URL => 'https://www.googleapis.com/drive/v3/files/'.$fileId.'/permissions',
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => json_encode(['type'=>'anyone', 'role'=>'reader',]),
CURLOPT_HTTPHEADER => [
'Authorization:Bearer '.$accessToken,
'Content-Type:application/json',
],
//In case you're in Windows, sometimes will throw error if not set SSL verification to false
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
];
//In case you need a proxy
//$options[CURLOPT_PROXY] = 'http://127.0.0.1:1087';
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
return $result;
}
Это сработало и возвращает json:
{
"kind": "drive#permission",
"id": "anyoneWithLink",
"type": "anyone",
"role": "reader",
"allowFileDiscovery": false
}
Файл в GoogleDrive действительно стал общедоступным:
Но в ответе нет ссылки на общий ресурс json, поэтому Я проверяю документацию, в здесь , вы можете найти параметр fields
(см. Снимок экрана ниже):
Нажмите Ответ перенаправит вас на страницу, содержащую несколько примеров того, как вы передаете значения в параметры fileds
.
Я следую примеру, передавая webViewLink
в качестве значения fields
следующим образом:
CURLOPT_URL => 'https://www.googleapis.com/drive/v3/files/'.$fileId.'/permissions?fields=webViewLink',
Но ответит ошибка:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidParameter",
"message": "Invalid field selection webViewLink",
"locationType": "parameter",
"location": "fields"
}
],
"code": 400,
"message": "Invalid field selection webViewLink"
}
}
Я пытался id
:
CURLOPT_URL => 'https://www.googleapis.com/drive/v3/files/'.$fileId.'/permissions?fields=id',
Ответ:
{
"id": "anyoneWithLink"
}
Я пытался name
:
CURLOPT_URL => 'https://www.googleapis.com/drive/v3/files/'.$fileId.'/permissions?fields=name',
Ответ:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidParameter",
"message": "Invalid field selection name",
"locationType": "parameter",
"location": "fields"
}
],
"code": 400,
"message": "Invalid field selection name"
}
}
Я пытался mimeType
:
CURLOPT_URL => 'https://www.googleapis.com/drive/v3/files/'.$fileId.'/permissions?fields=mimeType',
Ответ:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalidParameter",
"message": "Invalid field selection mimeType",
"locationType": "parameter",
"location": "fields"
}
],
"code": 400,
"message": "Invalid field selection mimeType"
}
}
Я правда Я не знаю, как работает этот fields
параметр, потому что я думаю, webViewLink
, name
и mimeType
являются правильными полями, все они описывают в здесь , , кто-то делал это раньше ? Я не собираюсь использовать google-api- php -клиент , потому что его размер слишком велик (> 20M).