搜索引擎访问Google Drive文件



我发现了一个公共的谷歌驱动器,其中包含许多子文件夹。我想做的是通过谷歌驱动器链接,获得所有子文件夹的链接。我检查了Google Drive API和PyDrive,这是Google Drive API的包装库,但两者似乎都只对个人Google Drive文件夹有帮助,而不是公共文件夹。我已经被这个问题困扰了好几天了,所以我不知道该去哪里。我可以抓取谷歌硬盘文件夹,但我不知道这是否是最理想的解决方案。我也想过制作每个驱动器文件的url字符串,然后使用它,但如果驱动器在未来更新,那么我必须回去看看添加了哪些其他新文件,这不是一个好的做法。如果有人能让我走上正轨,我将不胜感激!

我认为这应该通过创建OAuth2服务帐户来完成:

Google OAuth 2.0系统支持服务器到服务器的交互,例如web应用程序和Google服务之间的交互。对于这种情况,您需要一个服务帐户,该帐户属于您的应用程序,而不是单个最终用户。您的应用程序代表服务帐户调用GoogleAPI,因此用户不会直接参与其中。这种情况有时被称为";两条腿的OAuth;或";2LO"(相关术语"三条腿的OAuth"指的是应用程序代表最终用户调用Google API的场景,有时需要用户同意。(

即使您使用的是公共Google Drive,我相信您也需要通过身份验证才能通过Google的API进行搜索。为此,您需要使用服务帐户通过Google API进行身份验证。一个例子(通过NodeJS客户端(:

'use strict';
const { google } = require('googleapis');
const FOLDER_ID = '1Mp_a-OyGGlk5tGkezYK41iZ2qybnrPzp';
const KEY_FILE = './my-iam-service-account-key.json'
const drive = google.drive({
version: 'v3',
auth: new google.auth.GoogleAuth({
keyFile: KEY_FILE,
scopes: ['https://www.googleapis.com/auth/drive'],
})
});
drive.files.list({
q: `'${FOLDER_ID}' in parents`,
})
.then(({ data: { files, nextPageToken } }) => {
if (nextPageToken) console.log("More to get", nextPageToken);
return files;
})
.catch((res) => res.data)
.then(console.log);

最新更新