0

我在 Google App Engine 上有一个 Flex/Java 应用程序,我想要的只是使用 Flex 中的 URLRequest 从 Google Cloud Storage 加载大图像。我确信这很简单,但我无法让它工作。我将使用 Google API 控制台手动上传图像,因此我不需要从应用程序中编写任何内容。图片不能公开。

我不是 100% 确定如何访问该文件,所以这可能是问题所在。我试过这些:

  • “/gs/mybucket/myimage.jpg”未找到
  • “/mybucket/myimage.jpg”未找到
  • “http://commondatastorage.googleapis.com/mybucket/myimage.jpg”被拒绝

我在 Google API 控制台的 Team 选项卡中添加了myappid@appspot.gserviceaccount.com并具有Can View权限,我使用 GSUtil 在mybucketmyimage.jpg上获取和设置 ACL以添加myappid@appspot.gserviceaccount.com的READ权限但这没有帮助。

我究竟做错了什么?

4

2 回答 2

0

我不太确定 flex 是如何工作的,或者它是如何尝试访问 blob 的。

但是,如果您想使用 Google Storage 对象的内容响应 http 请求,则可以使用 serve 方法。

https://developers.google.com/appengine/docs/java/blobstore/overview#Serving_a_Blob

于 2012-05-14T22:39:03.687 回答
0

您是否使用 OAuth 令牌授权 URLRequest 调用?如果不是,那么即使请求是从应用程序引擎应用程序发起的,它也会像未经身份验证的公开读取一样查看 Google Cloud Storage。我不知道 flex 是否有跟踪选项,但如果有办法检查请求详细信息,我会检查您是否设置了正确的身份验证。

如果事实证明很难让 flex 与 OAuth 很好地配合使用,您还可以使用签名 URL(也称为查询字符串身份验证 URL)。这使您能够创建一个带有特殊签名的 URL,该签名隐含地传达您的授权,但只有拥有该链接的人才能访问该对象。可以将对象的 ACL 设置为禁止公共访问,但您的签名 URL 将能够读取该对象。如果您愿意,您还可以对签名 URL 进行时间限制。这是有关如何使用此技术的文档。

于 2012-05-19T16:10:48.193 回答