如何在部署的appengine数据库中调试eclipse中的服务器代码?

时间:2015-11-19 22:11:30

标签: java eclipse google-app-engine oauth remoteapi

我在Eclipse中有一个Google AppEngine(Java)项目。我想在Eclipse中调试我的本地代码,但是在AppEngine上使用已部署的数据库。到目前为止,我使用远程API和用户名/密码(旧方式)

此方法将被弃用,我想使用OAuth但是当我尝试使用它时,它会引发异常:

java.lang.IllegalStateException: OAuth-based authorization not supported for clients running on App Engine
at com.google.appengine.tools.remoteapi.RemoteApiOptions.getOrCreateHttpTransportForOAuth(RemoteApiOptions.java:359)
at com.google.appengine.tools.remoteapi.RemoteApiOptions.useApplicationDefaultCredential(RemoteApiOptions.java:162)

当我运行一个在Eclipse中使用远程api的简单Java客户端应用程序时,可以使用Everthing。但如果客户端是Eclipse中的AppEngine开发环境,则无法正常工作。

如何使用appengine数据库在eclipse中调试服务器代码?

错误报告:https://code.google.com/p/googleappengine/issues/detail?id=12556

3 个答案:

答案 0 :(得分:0)

根据documentation,您需要从 $ {SDK_ROOT} /lib/appengine-remote-api.jar 添加 appengine-remote-api.jar strong>到您的WEB-INF / lib目录(或将其添加到您的Maven依赖项),然后才能使用。

更新:事实上,App Engine与远程API的OAuth似乎尚未实施。我认为在ClientLogin完全弃用之前会有所改变,但是现在我建议在public issue tracker上打开一个功能请求。

一种可能的解决方法是创建连接到远程API的常规控制台应用程序(根据文档中的示例),并且可以充当在开发服务器上运行的App Engine应用程序的代理。

答案 1 :(得分:0)

这是expected,因为ApiProxy.getCurrentEnvironment()返回的值不是null,而是com.google.appengine.tools.development.LocalHttpRequestEnvironment对象。对于开发服务器,您现在必须使用旧样式(用户名/密码)。

答案 2 :(得分:0)

除了我的同事Adam和Nikita之前所说的,我还可以正式确认Google云计算工程团队决定在截止日期之前为ClientLogin shutdown影响的所有合理用例提供解决方案。

据推测,远程API解决方案将在即将发布的版本1.9.31 / 32中提供,尽管这只是一个假设,并且还没有ETA。

作为替代方案,您可以access Cloud Datastore using Protobufs远程使用服务帐户凭据,这可能符合您目前的需求。

更新2016/01/21:

该团队已将ClientLogin关闭截止日期延长至2016年4月12日。

更新2016/04/12:

如前所述,该修补程序已正确应用,并在最新版本的SDK和gcloud中提供。远程API现在可以再次与OAuth一起用于app-to-app(或devserver-to-app)连接。