从其他应用程序访问特定于应用程序的数据



我创建了一个Chrome扩展,它利用了谷歌硬盘的应用程序特定数据:

https://developers.google.com/drive/api/v3/appdata

正如我所希望的那样。现在,我希望从我机器上的节点服务器访问这些数据。我发现了这个使用谷歌驱动器和节点的例子:

https://developers.google.com/drive/api/v3/quickstart/nodejs

这个例子对我有用,但它有一个不同的范围,列出了驱动器上用户可见的文件。我想做的是访问谷歌驱动器上的应用程序特定数据,该数据是从我的第一个应用程序(Chrome扩展(创建的。

我不知道该怎么办。在完成了第二个教程之后,第二个项目被添加到了我的谷歌开发者控制台中(https://console.developers.google.com)。我想,为了访问特定于应用程序的数据,我需要模仿nodejs应用程序正在做的事情,但使用不同的范围,在开发人员控制台中的第一个项目(最初用于chrome扩展(条目中,可能会添加第二个OAuth 2.0客户端ID。是这样吗?我还应该研究其他步骤吗?

在您的节点应用程序上,您需要使用存储应用程序特定数据的同一项目的OAuth凭据来授权作用域https://www.googleapis.com/auth/drive.appdata

这就是应用程序特定数据的要点:存储只能由创建它的同一应用程序访问的数据。凭据是识别应用程序的东西。

注意,这里的"应用程序"一词指的是为其创建凭据的GCP项目,而不是你是否在Chrome扩展、节点服务器上使用这些凭据。存储过程由Chrome扩展完成,访问由节点应用程序完成,这无关紧要。当访问Drive API时,他们使用的是来自同一GCP项目的凭据,这一事实将他们两个标识为同一个应用程序(我猜混淆来自于对"应用程序"这个词的普遍使用(。

无论如何,一旦完成了OAuth过程,为了搜索应用程序数据文件夹中的文件,必须将spaces字段设置为appDataFolder,并调用files:list,如下所示:

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);
});
}
});

参考:

  • 存储特定于应用程序的数据

最新更新