Google Drive API应用程序数据从Web浏览器访问凭据(Javascript)

时间:2016-06-21 15:19:41

标签: google-drive-api google-picker gapi

我正在尝试从Google控制台获取凭据以通过Web browser(Javascript)选项访问我的应用程序驱动器数据(以便在后面使用Picker API)。但是当我选择选项应用程序数据(访问属于您自己的应用程序的数据)时,我收到了消息:

  

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

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

感谢。

2 个答案:

答案 0 :(得分:3)

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

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

我想你正在尝试第二种选择。我遇到了同样的问题,当你逐步进行时,它说驱动器是不安全的,我不明白,因为你要共享一个公钥而只能进行访问公开文件。

要生成此密钥,您可以https://console.developers.google.com/apis/credentials点击"创建creadential"并选择" API密钥"。

请记住,api密钥无用于执行您需要特殊权限的任何操作,您唯一能做的就是读取公共文件/文件夹。

现在,如果您不需要第二个选项,则需要在浏览器中访问应用程序的私有数据。它不可能,因为它说它不是,它不安全的确切原因。在您提出的每个请求中都会显示密钥,有人可以轻松窃取您的密钥并对您的云端硬盘帐户执行任何操作。

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

答案 1 :(得分:1)

Drive's Application Data指南上找到了这个。

  

为了能够使用您的Application Data文件夹,请求访问   以下范围:

     

Relationships.Partner_ID <> 0

如果您在Working with the Application Data folder上阅读更多信息,也可能有所帮助。希望有所帮助。