Получить общую ссылку с помощью API Диска Google

Я работаю над приложением с помощью Google Диска. Я хочу, чтобы пользователь имел возможность обмениваться файлами по ссылке, устанавливая разрешения для anyone и withLink, как описано в Документация разработчиков Google..

Однако я не могу понять, какую ссылку вы хотите поделиться. Когда я делюсь файлом в интерфейсе браузера Google Диска, я вижу Link to share в формате:

https://docs.google.com/presentation/d/[...]/edit?usp=sharing

Ссылка в этом формате не является частью объекта файлового ресурса, и она не возвращается из настройки HTTP-разрешения. Надеюсь, кто-то может объяснить мне, как получить эту ссылку через REST api?

Ответ 1

Вы можете использовать свойство alternateLink в ресурсе File, чтобы получить ссылку, которой можно поделиться для открытия файла в соответствующем редакторе или средстве просмотра Google:

https://developers.google.com/drive/v2/reference/files

Обновление

[С API V3] (https://developers.google.com/drive/api/v3/reference/files предлагается использовать свойство webViewLink.

Ответ 2

В моем случае, используя PHP Api v3, чтобы ссылка была непустой, вы должны определить, что вы запрашиваете это поле... и если у вас есть права:

так что-то вроде этого:

$file =self::$service->files->get("1ogXyGxcJdMXt7nJddTpVqwd6_G8Hd5sUfq4b4cxvotest",array("fields"=>"webViewLink"));

Ответ 3

Чтобы включить общий доступ к ссылкам, используя Google Drive API:

drive.permissions.create({
  fileId: '......',
  requestBody: {
    role: 'reader',
    type: 'anyone',
  }
});

Получите значение webLinkView, используя:

const webViewLink = await drive.files.get({
    fileId: file.id,
    fields: 'webViewLink'
}).then(response => 
    response.data.webViewLink
);