我创建了一个 Chrome 扩展程序,它利用了谷歌驱动器的应用程序特定数据:
https://developers.google.com/drive/api/v3/appdata
它像我希望的那样工作。现在,我希望从我机器上的节点服务器访问该数据。我找到了这个使用谷歌驱动器和节点的例子:
https://developers.google.com/drive/api/v3/quickstart/nodejs
该示例适用于我,但它具有不同的范围,列出了用户在驱动器上可见的文件。我想要做的是访问谷歌驱动器上的应用程序特定数据,该数据是从我的第一个应用程序(Chrome 扩展程序)创建的。
我不知道该怎么做。在完成第二个教程后,我的 Google 开发者控制台 ( https://console.developers.google.com ) 中添加了第二个项目。我在想,为了访问特定于应用程序的数据,我需要模拟 nodejs 应用程序正在做什么,但使用不同的范围,并在开发者控制台中的第一个项目(最初用于 chrome 扩展)条目中,也许添加第二个 OAuth 2.0 客户端 ID。是对的吗?我还应该研究其他步骤吗?
在您的节点应用程序上,您需要https://www.googleapis.com/auth/drive.appdata
使用来自存储应用程序特定数据的同一项目的 OAuth 凭据来授权范围。
这就是特定于应用程序的数据的要点:存储只能由创建它的同一个应用程序访问的数据。凭据是应用程序的标识。
请注意,此处的应用程序一词是指为其创建凭据的 GCP 项目,而不是指您是否在 Chrome 扩展程序、节点服务器或您拥有的任何设备上使用这些凭据。存储过程是由 Chrome 扩展程序完成的,与节点应用程序的访问无关。在访问 Drive API 时,他们使用来自同一个 GCP 项目的凭据这一事实将它们标识为同一个应用程序(我猜混淆来自应用程序这个词的普遍使用)。
无论如何,一旦你通过OAuth的历程,以搜索应用程序数据文件夹中的文件,你必须设置spaces
字段appDataFolder
,并调用文件:列表,如图所示在这里:
drive.files.list({
spaces: 'appDataFolder',
fields: 'nextPageToken, files(id, name)',
pageSize: 100
}, function (err, res) {
if (err) {
// Handle error
console.error(err);
} else {
res.files.forEach(function (file) {
console.log('Found file:', file.name, file.id);
});
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句