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

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

这个方法将被弃用,我想使用OAuth,但是当我尝试使用它时,它会引发exception:

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

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

根据文档 ,您需要将$ {SDK_ROOT} /lib/appengine-remote-api.jar中的 appengine-remote-api.jar添加到您的WEB-INF / lib目录(或将其添加到您的Maven依赖项)之前将工作。

更新:事实上,看起来App Engine与远程API的OAuth尚未实现。 我认为这会在ClientLogin完全弃用之前发生变化,但是现在我建议在公共问题跟踪器上打开一个function请求。

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

除了我的同事亚当和尼基塔此前所说的,我还可以正式确认Google云计算工程团队决定为所有合理的用例提供解决方案,这些用例在截止日期之前受到ClientLogin关闭的影响。

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

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

更新2016/01/21:

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

更新2016/04/12:

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