【问题标题】:Anyone to upload a file to my Google Drive public folder using JavaScript任何人都可以使用 JavaScript 将文件上传到我的 Google Drive 公用文件夹
【发布时间】:2016-08-12 09:59:32
【问题描述】:

我是 Google API 的新手。我的目标是允许网站用户将文件上传到我们的公共 Google Drive 文件夹。我应该在客户端做。

我知道这并不安全,但团队正在推动我在前端执行此操作。

我已经阅读并尝试了不同的解决方案(也来自 StackOverflow 的答案),但没有任何效果。

我还查看了 Google Drive API 文档:https://developers.google.com/drive/v3/web/manage-uploads

请求应该是:

POST /upload/drive/v3/files?uploadType=media HTTP/1.1
Host: www.googleapis.com
Content-Type: image/jpeg
Content-Length: number_of_bytes_in_file
Authorization: Bearer your_auth_token

JPEG data

我尝试在 JavaScript 中发出简单的 HTTP POST 请求,但无法设置 Host 标头(不安全标头错误)。

your_auth_tokenclient secret 吗?

有什么想法可以实现吗?

【问题讨论】:

  • 任何人都可以将文件上传到您的 Google 云端硬盘。您是否尝试过发布并将Who has access to the app 设置为任何人,甚至匿名
  • @d.datul1990 我不确定,但我认为此选项仅适用于 Google Apps 脚本。顺便说一句,我是通过 Google Script 完成的,但我需要将它集成到我们的 Salesforce 应用程序中,所以我刚刚在 GoogleAPI 控制台中注册了我们的应用程序。

标签: javascript api file-upload google-drive-api httprequest


【解决方案1】:

您需要创建一个 Google 应用程序以将您的 auth_token 粘贴到您的请求标头中,这样应该可以正常工作。

授权的工作原理 概括地说,所有应用都遵循相同的基本授权模式:

  1. 在 Google API 控制台中注册应用程序。
  2. 请求用户授予对其 Google 帐户中数据的访问权限。
  3. 如果用户同意,您的应用程序请求并接收 凭据到
  4. 访问 Drive API。
  5. 刷新凭据(如有必要)。

创建新的身份验证

  1. 在凭据页面中,单击创建凭据 > OAuth 客户端 用于创建 OAuth 2.0 凭据或创建凭据的 ID > 用于创建服务帐号的服务帐号密钥。
  2. 如果您创建了 OAuth 客户端 ID,请选择您的应用程序 类型。填写表格并点击创建。

客户端密钥存储在这里:

https://console.developers.google.com/flows/enableapi?apiid=drive&safe=vss&credential=client_key

更多文档

https://developers.google.com/drive/v2/web/about-auth

【讨论】:

  • 我已经创建了一个应用程序。我可以授权并将文件上传到我自己的谷歌驱动器,但是......我可以以某种方式跳过授权或自动授权到我的驱动器帐户以让用户上传他们的文件吗?
  • @Frelseren 我的经验是,这可能不是最好的主意,甚至可能是不可能的。老实说,我不认为 Google 会允许这样做,您可以拥有一个共享的 auth_token?
  • 我几乎已经使用github.com/googledrive/cors-upload-sample 完成了这项工作。是的,我们需要一个 auth_token。我的同事开始在后端工作。
  • @Frelseren 你有没有想过创建一个 REST 服务,它可以像中间人一样工作,并且只有一个服务密钥?
  • 是的,这正是我们要尝试的。我稍后会发布结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
相关资源
最近更新 更多