是否有办法为公开托管的Goolge云端硬盘文件夹提供不使用授权的文件?
示例文件夹:https://googledrive.com/host/0B1Nmfb7VDM6jNnhjWk9CdU9ueHc/
我想使用该文件夹托管我将在其他网站的图库中显示的图片。
答案 0 :(得分:15)
确定有一种方法,它非常简单,只需要一点设置。我们需要获取可以返回JSONP的Google云端硬盘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请求。 这是您需要的网址。
复制请求网址。例如: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/ 在左侧菜单中选择'凭据'。 点击“创建凭据”#39;并选择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(){
});
答案 1 :(得分:3)
列出公用文件夹的方法很简单 - 只需使用YQL即可获得XML或JSON结果。
答案 2 :(得分:2)
没有办法没有经过验证。但是,您可以作为任何用户进行身份验证,并使用drive.children.list()
获取列表答案 3 :(得分:0)
对于仍然对此请求有疑问的人,只需使用以下模板:https://www.googleapis.com/drive/v3/files?q=%27{YOUR FOLDER ID}%27+in+parents&key={YOUR API KEY}
(不带括号)。
这确实对我有帮助,因为这些“'”字符问题是拖动
答案 4 :(得分:0)
这是您可以使用PHP进行的方式
<?php
require __DIR__ . '/vendor/autoload.php';
if (php_sapi_name() != 'cli') {
throw new Exception('This application must be run on the command line.');
}
$client = new Google_Client();
// set the location manually
$client->setAuthConfig('credentials.json');
$client->setApplicationName("My Application");
$client->setScopes(Google_Service_Drive::DRIVE_METADATA_READONLY);
$service = new Google_Service_Drive($client);
// Print the names and IDs for up to 100 files.
$optParams = array(
'pageSize' => 100,
'fields' => 'nextPageToken, files(id, name)',
'q' => "'YOUR_FOLDER_ID' in parents",
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
print "No files found.\n";
} else {
print "Files:\n";
foreach ($results->getFiles() as $file) {
printf("%s (%s)\n", $file->getName(), $file->getId());
}
}
答案 5 :(得分:0)
一种不使用任何API密钥的替代解决方案是不使用任何API密钥,而是使用google app-script生成目录的文本文件,并将该脚本每天放置在触发器上,以便在目录更改时刷新它,然后只需简单地制作由google apps脚本修改的google doc文件,并在其末尾加上公共网址加/export?format=txt
,对于普通文件,例如https://drive.google.com/uc?export=download&id=INSERT_ID_HERE
,然后将其公开未经授权即可在网络上访问
答案 6 :(得分:-1)
您展开的Google驱动器网址为this,因此请使用扩展网址,如下所示,以#34; .html&#34;延期。此示例使用jquery调用ajax。
根据您的需要调整脚本。
<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)记录到控制台,并将每个文件名的超链接添加到正文的末尾。