Я пытаюсь получить доступ к мультимедийным файлам в папке, созданной моим веб-приложением, используя официальную библиотеку API Google для node.js (https://github.com/googleapis/google-api-nodejs-client/).
При успешном завершении oauth я создаю папку MyAppFolder
и папку media
внутри нее.
Идея состоит в том, что пользователи будут заполнять эту папку media
любыми фотографиями и видео, которые они хотят, тогда мое веб-приложение возьмет их и отобразит на странице, чтобы пользователь мог получить общее представление о своих медиафайлах. Я могу получить все медиа-файлы в папке media
. Вот мой фрагмент кода:
async function getGoogleDriveMedia({ user, credentials }) {
// await prepareDrive({ user, credentials });
const rootFolder = await getRootFolder({ user, credentials });
if (!rootFolder) {
return;
}
const client = await createOauthClient({ user, credentials });
const drive = google.drive({
version: 'v3',
auth: client,
});
const mediaFolderRes = await drive.files.list({
q: `mimeType='application/vnd.google-apps.folder' and name='media' and '${
rootFolder.id
}' in parents`,
fields: 'nextPageToken, files(id, name, parents)',
});
const mediaFolder = _.get(mediaFolderRes, 'data.files[0]');
if (!mediaFolder) {
return;
}
const mediaRes = await drive.files.list({
q: `'${
mediaFolder.id
}' in parents and (mimeType contains 'image/' or mimeType contains 'video/')`,
fields:
'nextPageToken, files(' +
[
'id',
'name',
'webContentLink',
'webViewLink',
].join(', ') +
')',
});
return _.get(mediaRes, 'data.files');
}
Проблема в том, что я не могу отображать эти медиа, потому что они не доступны для общественности. Можно ли сделать MyAppFolder
и все в нем доступным для общественности с помощью одного обновления прав доступа? Или мне нужно сделать это для каждого файла?
Я также проверил параметр fields.files
в их проводнике API: https://developers.google.com/apis-explorer/#search/drive.files.list/m/drive/v3/drive.files.list
Нет ничего похожего на .previewLink
или какое-либо другое поле URL изображения.
Как я могу показать эти изображения в моем веб-приложении?