Google Drive API Application data accessing credentials from Web browser(Javascript)

Ole*_*uts 5 google-drive-api google-api-js-client google-picker

I'm trying to obtain credentials from Google Console to access my Application Drive data through Web browser(Javascript) option (In order to use Picker API latter on). But when I select option Application data(Access data belonging to your own application) I got the message:

无法从 Web 浏览器安全地访问应用程序数据。请考虑选择其他平台。

谁能解释一下,为什么它不安全,以及如何使用 Web 浏览器访问我的应用程序数据,也许应该选择不同的凭据?

谢谢。

Tia*_*nça 3

您可以通过三种可能的方式访问您的 Google 云端硬盘数据:

  • 通过 OAuth 的浏览器:向用户打开一个弹出窗口,他登录到他/她的 Google 帐户并获取访问令牌。您可以在向驱动器 api 发出的每个请求中将此令牌作为参数键传递。
  • 浏览器通过 API 密钥:无需登录,Google 只需要此密钥即可知道哪个应用程序正在使用其服务。这是最简单的选项,当您没有服务器端应用程序并且只需要访问公共数据时可以使用此选项。您无法通过此方法访问任何私人文件。
  • 服务器端:您使用私钥进行身份验证。对驱动器 api 的所有请求必须仅在后端发出,在 JavaScript 代码中共享您的密钥是不安全的。

我想你正在尝试第二种选择。我遇到了同样的问题,当您逐步执行操作时,它说这对于云端硬盘来说是不安全的,我不明白,因为您将共享公钥并仅访问公开可用的文件。

要生成此密钥,您可以转到https://console.developers.google.com/apis/credentials单击“创建凭证”并选择“API 密钥”。

请记住,API 密钥无法执行任何您需要特殊权限的操作,您唯一可以用它执行的操作就是读取公共文件/文件夹。

现在,如果这不是您需要的第二个选项,如果您需要在浏览器中访问应用程序的私有数据。这是不可能的,因为它说不可能,它不安全。密钥将在您提出的每个请求中可见,有人很容易窃取您的密钥并对您的云端硬盘帐户执行他/她想要的任何操作。

但是,如果您需要在浏览器中访问私有内容,我想您有一个登录系统,如果没有,则没有理由将其在 Google Drive 中设为私有(无论如何任何人都可以访问)。如果您有登录系统,则必须有服务器端应用程序。在这种情况下,正确的做法是将所有对 Drive api 的调用移至后端,并使用私钥(上列表中的第三个选项)进行身份验证。