Google云端存储设置权限给出了错误的请求错误Java JSON API

ung

我正在使用JSON API Java库将对象上传到Google Cloud Storage。我已经弄清楚了如何添加具有角色READER的实体allUsers以获取公共访问权,但是我尝试添加到ObjectAccessControl列表中的任何其他实体/角色条目都会产生一些通用错误,例如

com.google.api.client.googleapis.json.GoogleJsonResponseException:400错误的请求

"code" : 400,
"errors" : [ {
    "domain" : "global",
    "message" : "Invalid Value",
    "reason" : "invalid"
  }

...对于我拥有的每个ACL条目,除了allUsers READER似乎有效

我不确定它在抱怨什么。我试图重现在开发人员控制台中看到的默认权限,即当我未在元数据上指定任何ACL时。owner-projectId所有者,editers-projectId所有者,viewers-projectId阅读器和用户ID所有者(我猜这是服务帐户ID)

我将这些添加到ACL列表的方​​式与allUsers实体相同。我搜索了几个小时,试图找到一些文档或与此类似的问题,但只找到了一个与allUsers有关的文档。我尝试转义这些ID,以为JSON库可能对我而言不是这样做,但会出现相同的错误。

这是我相关的Java代码:

// Set permissions and content type on StorageObject metadata       
StorageObject objectMetadata = new StorageObject();

// set access control
List<ObjectAccessControl> acl = Lists.newArrayList();
acl.add(new ObjectAccessControl().setEntity("allUsers").setRole("READER"));
// this one allows upload to work without error if it is the only access specified,
// but prevents me from modifying publicly available status or editing permissions
// via the developers console (I think this is to be expected)

// attempt to replicating bucket defaults...
// adding any of these will cause the error
acl.add(new ObjectAccessControl().setEntity("owners-projectId").setRole("OWNER"));
acl.add(new ObjectAccessControl().setEntityId("editors-projectId").setRole("OWNER"));
acl.add(new ObjectAccessControl().setEntityId("viewers-projectId").setRole("READER"));

objectMetadata.setAcl(acl);

其中projectId是我从开发者控制台站点复制的项目ID。

ung

终于明白了。

我首先怀疑我的DEVSTORAGE_READ_WRITE的存储范围不够,然后尝试了DEVSTORAGE_FULL_CONTROL,但这不是原因。

也请忽略我在原始帖子中对setEntityId(...)的使用,尽管这也是我也没有尝试过的事情。

问题是实体参数中的语法不正确。您需要的文档是这样的:https : //cloud.google.com/storage/docs/json_api/v1/defaultObjectAccessControls

然后,您将看到正确的方法如下所示:

acl.add(new ObjectAccessControl().setEntity("project-owners-projectId").setRole("OWNER"));

奇怪的是,这不起作用:

acl.add(new ObjectAccessControl().setProjectTeam(new ProjectTeam().setProjectNumber("projectId").setTeam("owners")).setRole("OWNER"));

我怀疑设置项目团队实体的方法是Java库中的错误,但我不确定。

对于不正确实体的错误消息,总是说需要“域全局”或“域全局无效”,这根本不是很有启发性的。在这种情况下,不需要设置域。另请参见以下内容的讨论:插入对象时,ACL定义中Google Cloud Storage期望哪个域?

希望这可以帮助其他人!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

json api获取请求错误

来自分类Dev

使用Java的JSON API在Google云端存储中插入对象(作为文件夹)

来自分类Dev

尝试访问Google API时Java中出现JSON错误

来自分类Dev

Google API的Python错误加载JSON代码

来自分类Dev

Python放置请求。Spotify API放置请求格式错误的Json

来自分类Dev

如何请求JSON API

来自分类Dev

创建 JSON API 请求

来自分类Dev

R中带有JSON的POST请求给出了错误的请求

来自分类Dev

在Google云端存储分区/对象上设置“域”权限-仅限于UI或API?

来自分类Dev

Nodejs instagram api post请求authcode,它给出了错误400

来自分类Dev

elasticsearch JSON Java API

来自分类Dev

收到400错误的请求原因:需要来自Google Cloud stoarge json API

来自分类Dev

Laravel 5.2 JSON请求错误的api_token响应

来自分类Dev

python简单的json错误?或API错误?

来自分类Dev

Python 循环 JSON API 请求

来自分类Dev

为 API 构建请求 JSON

来自分类Dev

Google API Distancematrix在VBA中返回错误的json结果

来自分类Dev

从R呼叫时,来自Google Directions API的格式错误的JSON

来自分类Dev

Google Cloud Storage JSON上载器API显示错误

来自分类Dev

WordPress JSON API仅返回404错误

来自分类Dev

HistoryServer REST API的JSON中的错误

来自分类Dev

Web API错误处理返回json

来自分类Dev

JavaScript中的MediaWiki API JSON解析错误

来自分类Dev

从API调用解析Json响应-foreach错误

来自分类Dev

Web API以错误的格式发送JSON对象

来自分类Dev

乘车提醒Uber Api收到JSON错误

来自分类Dev

python mailchimp api 2.0 json响应错误

来自分类Dev

发现API失败,出现JSON错误

来自分类Dev

ModelStateDictionairy 格式错误的 json web api

Related 相关文章

热门标签

归档