Ответ 1
Невозможно сделать это без проверки подлинности. Однако вы можете аутентифицироваться как ЛЮБОЙ пользователь и получить список с drive.children.list()
Есть ли способ получить список файлов без использования авторизации для общедоступной папки Goolge Drive?
Пример папки: https://googledrive.com/host/0B1Nmfb7VDM6jNnhjWk9CdU9ueHc/
Я хочу использовать папку для размещения изображений, которые будут отображаться в галерее на других сайтах.
Невозможно сделать это без проверки подлинности. Однако вы можете аутентифицироваться как ЛЮБОЙ пользователь и получить список с drive.children.list()
ОК, есть способ, и это довольно просто, ему просто нужно немного настроить. Нам нужно получить URL-адрес Google Диска, который может вернуть JSONP, а затем запустить запрос против него.
Создать общедоступный URL. Идти к: https://developers.google.com/apis-explorer/?hl=en_GB#p/drive/v3/drive.files.list
В поле "q" введите следующее:
'{your_public_folder_id}' in parents
Нажмите кнопку "Выполнить без OAuth" под кнопкой.
Теперь вы должны увидеть все ваши файлы, перечисленные ниже. Он также показывает вам запрос GET. Это URL, который вам понадобится.
Скопируйте URL-адрес запроса. Что-то вроде: https://www.googleapis.com/drive/v3/files?q= '{your_public_folder_id}' + in + parents & key = {YOUR_API_KEY}
Теперь вам нужно сгенерировать ключ API. Перейдите в Google Консоль: https://console.developers.google.com/ В левом меню выберите "Учетные данные". Нажмите "Создать учетные данные" и выберите ключ API. Нажмите "Браузерный ключ" Скопируйте сгенерированный ключ.
Теперь вы можете сделать что-то вроде этого:
var api_key = '{YOUR_API_KEY}';
var folderId = '{your_public_folder_id}';
var url = "https://www.googleapis.com/drive/v3/files?q='" + folderId + "'+in+parents&key=" + api_key;
var promise = $.getJSON( url, function( data, status){
// on success
});
promise.done(function( data ){
// do something with the data
}).fail(function(){
});
Существует простой способ перечислить общую папку - просто используйте YQL, чтобы получить результаты XML или JSON.
Для тех, у кого все еще есть проблемы с этим запросом, просто используйте этот шаблон: https://www.googleapis.com/drive/v3/files?q=%27{YOUR FOLDER ID}%27+in+parents&key={YOUR API KEY}
без скобок.
Это действительно помогает мне, потому что проблема этих персонажей "
Ваш расширенный URL-адрес устройства google this, поэтому используйте расширенный URL-адрес, как показано ниже, чтобы получить все файлы, заканчивающиеся на расширение .html. В этом примере используется вызов ajax с помощью jquery.
Подчеркните script в соответствии с вашими потребностями.
<script type="text/javascript">
var dir = "https://d95b2b8c54c1827d7a316594f5436a81b5bb2b76.googledrive.com/host/0B1Nmfb7VDM6jNnhjWk9CdU9ueHc/";
var fileextension = ".html";
$.ajax({
//This will retrieve the contents of the folder if the folder is configured as 'browsable'
url: dir,
success: function (data) {
//Lsit all png file names in the page
$(data).find("a:contains(" + fileextension + ")").each(function () {
var filename = this.href.replace(window.location.host, "").replace("http://", "").replace("https://", "");
console.log(filename);
filename = filename.split("/").pop();
$("body").append($("<a href=" + dir + filename + ">" + filename + "</a>"));
});
});
}
});
</script>
Это будет записывать все finename (.html) в консоль и добавлять гиперссылку для каждого имени файла до конца тела.