首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gcloud-java身份验证数据存储(升级到0.1.7/0.2.0中的v1beta3 )

gcloud-java身份验证数据存储(升级到0.1.7/0.2.0中的v1beta3 )
EN

Stack Overflow用户
提问于 2016-04-14 10:38:53
回答 2查看 346关注 0票数 0

我使用gcloud-java 0.1.4运行了一个java GAE应用程序一段时间,并希望升级到gcloud-java 0.1.7/0.2.0,因为我们经历了几个404 s等等(另一个问题)。在连接到另一个GAE应用程序中的数据存储实例时,我们使用的是gcloud。

但是升级包之后,我们的身份验证就失败了。根据我在发布说明中看到的内容,我们不得不在“主机”应用程序上重新启用数据存储-api,所以我们做到了,但没有任何结果。当再次“降级”时,应用程序按预期工作,但仍然存在一些稳定性问题。

是否还有其他无文档的修复/方法可以让它正常工作?

我的连接代码/函数看起来像(剥离):

代码语言:javascript
复制
fis = new FileInputStream(Constants.PATH_TO_JSON_KEY);
sac = AuthCredentials.createForJson(fis); 

DatastoreOptions.Builder builder = DatastoreOptions.builder();
builder.projectId(Constants.DATASTORE_PROJECT_ID);
builder.authCredentials(sac);
DatastoreOptions options = builder.build();

return options.service();

编辑:

这是我得到的一些堆栈痕迹。

代码语言:javascript
复制
[INFO] apr 17, 2016 6:19:33 PM com.google.datastore.v1beta3.client.DatastoreFactory makeClient
[INFO] com.google.cloud.datastore.DatastoreException: Not authorized.
[INFO]  at com.google.cloud.datastore.spi.DefaultDatastoreRpc.translate(DefaultDatastoreRpc.java:102)
[INFO]  at com.google.cloud.datastore.spi.DefaultDatastoreRpc.runQuery(DefaultDatastoreRpc.java:157)
[INFO]  at com.google.cloud.datastore.DatastoreImpl$1.call(DatastoreImpl.java:92)
[INFO]  at com.google.cloud.datastore.DatastoreImpl$1.call(DatastoreImpl.java:89)
[INFO]  at com.google.cloud.RetryHelper.doRetry(RetryHelper.java:181)
[INFO]  at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:247)
[INFO]  at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:237)
[INFO]  at com.google.cloud.datastore.DatastoreImpl.runQuery(DatastoreImpl.java:88)
[INFO]  at com.google.cloud.datastore.QueryResultsImpl.sendRequest(QueryResultsImpl.java:73)
[INFO]  at com.google.cloud.datastore.QueryResultsImpl.<init>(QueryResultsImpl.java:57)
[INFO]  at com.google.cloud.datastore.DatastoreImpl.run(DatastoreImpl.java:82)
[INFO]  at com.google.cloud.datastore.DatastoreImpl.run(DatastoreImpl.java:73)
.....
[INFO] Caused by: com.google.datastore.v1beta3.client.DatastoreException: Not authorized., code=PERMISSION_DENIED
[INFO]  at com.google.datastore.v1beta3.client.RemoteRpc.makeException(RemoteRpc.java:126)
[INFO]  at com.google.datastore.v1beta3.client.RemoteRpc.makeException(RemoteRpc.java:169)
[INFO]  at com.google.datastore.v1beta3.client.RemoteRpc.call(RemoteRpc.java:89)
[INFO]  at com.google.datastore.v1beta3.client.Datastore.runQuery(Datastore.java:108)
[INFO]  at com.google.cloud.datastore.spi.DefaultDatastoreRpc.runQuery(DefaultDatastoreRpc.java:155)
[INFO]  ... 56 more
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-20 10:16:45

我们使用的服务帐户没有在目标应用程序中设置具有适当权限的安装程序。因此,我们(根据google的建议)重新添加了服务帐户作为查看器:https://console.cloud.google.com/permissions/projectpermissions

我希望这能对将来的人有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2016-04-15 17:48:33

谢谢你报道这个问题。我有几个跟进问题,这样我们才能弄清问题的真相:

您设置的项目ID (Constants.DATASTORE_PROJECT_ID)是否包含任何带有倾斜号的前缀,例如"s~“或"e~"?Datastore v1beta3不再接受这些前缀;相反,您应该在倾斜后提供所有内容作为您的项目ID。例如,如果您的项目ID是s~my-project-id-123,则应该只使用my-project-id-123。如果您看到类似于以下内容的错误消息,这可能就是问题所在:

代码语言:javascript
复制
com.google.datastore.v1beta3.client.DatastoreFactory makeClient: Not using any credentials
com.google.cloud.datastore.DatastoreException: The project s~my-project-id-123 does not exist.

如果这不是问题所在,您介意提供堆栈跟踪和异常文本的副本(必要时删除机密信息)吗?谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36620622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档