【发布时间】:2016-10-21 09:15:37
【问题描述】:
我试图弄清楚如何使用 rest API 将文件上传到谷歌云存储,我不想使用客户端库。
我阅读了文件,但对初学者没有帮助,
任何人都可以给我一步一步如何做到这一点?以及 URL/header/body 格式应该是什么样子,如果也可以给我一个非常有帮助的例子。
【问题讨论】:
标签: google-api google-cloud-storage
我试图弄清楚如何使用 rest API 将文件上传到谷歌云存储,我不想使用客户端库。
我阅读了文件,但对初学者没有帮助,
任何人都可以给我一步一步如何做到这一点?以及 URL/header/body 格式应该是什么样子,如果也可以给我一个非常有帮助的例子。
【问题讨论】:
标签: google-api google-cloud-storage
如果您不打算使用任何帮助程序库并且也是初学者,那么实现上传到 GCS 的最困难的部分可能是验证您自己。让我们暂时忽略它。
将对象上传到 Google Cloud Storage 的最简单方法是对 storage.googleapis.com 进行 HTTPS 调用,如下所示:
PUT /your-bucket-name/your-object.txt HTTP/1.1
Authorization: (YOUR ACCESS TOKEN GOES HERE)
Content-Length: 20
Content-Type: text/plain-or-whatever; charset=utf-8
Host: storage.googleapis.com
User-Agent: YourApplication/1.0
This is a test file
这会将类型为“text/plain-or-whatever”的名为“your-object.txt”的文件上传到存储桶“your-bucket-name”,内容为“这是一个测试文件。”
如果您的存储桶允许匿名用户上传文件(您不应该这样做),那么只要不包括 Authorization 行就可以了。
现在,由于您真的不想使用任何客户端库,而且大概包括 Google 的 OAuth 库,您将需要自己实现授权,所以让我给您一个概述。
不过,首先,如果您想立即试用,请安装“gcloud”工具,使用“gcloud auth login”登录,然后使用gcloud auth print-access-token 打印访问令牌。然后使用授权标头Authorization: Bearer whatever.gcloudprintedout。这样您就可以快速启动并运行 GCS。但是令牌只会持续一个小时左右,所以你需要真正实现 OAuth。
Google Cloud API 使用 OAuth 来处理他们的请求,这是一种强大但不简单的身份验证机制。关于 OAuth with Google 如何工作的大量文档:https://developers.google.com/identity/protocols/OAuth2
还有更多关于授权 Google Cloud 请求的一般信息:https://cloud.google.com/docs/authentication
如果您在 App Engine 或 GCE 等 Google Cloud 技术上运行应用程序,则身份验证会更容易一些,但我假设您是在自己的机器上运行它。我将进一步假设您希望您的应用程序拥有自己的身份,而不是简单地让您作为上传流程的一部分登录。对于这种情况,您需要一个服务帐户,该帐户将具有关联的私钥。
服务帐号的基本流程是,您将创建一个 JWT 访问凭证请求,然后使用您的私钥对该请求进行加密签名,然后将该签名请求发送给 Google。它将返回一个令牌,稍后可能会将其传递给您的实际上传请求。您可以继续使用该令牌直到它过期,届时您将需要构建另一个 JWT 请求来请求另一个令牌。
同样,客户端库完全为您处理整个过程。我正在描述完全由您自己实现所有内容的方法。
【讨论】:
【讨论】: