在开发服务器上配置AppIdentityService的使用

Ste*_*eve 39 java google-app-engine authorization

我有一个应用程序,目前使用它com.google.appendinge.api.appidentity.AppIdentityService来促进使用相同的应用程序的身份验证和授权[即.同一帐户]通过SpreadsheetServiceAPI的电子表格数据.在部署到GAE环境的生产模式下工作得很好.但是由于显而易见的原因,它在我的开发appengine环境中运行不起作用(身份验证错误,没有惊喜).

我的问题是:是否可以"支持"配置一个本地开发服务器以使用必要的密钥和证书信息来使AppIdentityService按预期工作?

我阅读了https://sites.google.com/site/oauthgoog/authenticate-google-app-engine-app这篇文章,我理解这是有可能的,但我误解了关键点并希望得到任何反馈关于这个问题.

在一个完美的世界里,我希望我的测试环境能够尽可能地模仿生产模式.我也在考虑在我的测试环境中使用'普通'oauth2 web应用程序身份验证,但是如果可能的话,我更愿意坚持使用AppIdentityService.

我怀疑com.google.appengine.api.appidentity.dev.LocalAppIdentityService该类中的类appengine-api-stubs.jar是预期的技术,但有没有其他人也使用它来AppIdentityService在开发服务器中提供身份验证?我最初的假设是com.google.appengine.api.appidentity.IAppIdentityServiceFactoryProvider使用上面的LocalAppIdentityService类替换com.google.appengine.spi.FactoryProvider中的类来使用我自己的工厂类.还是我在错误的树上吠叫?

使用GAE SDK 1.8.8 for Java.

E. *_*son 1

在本地开发服务器下运行时,GAE Java 应用程序身份 API 调用GoogleCredentials 库来检索默认应用程序凭据

  1. GOOGLE_APPLICATION_CREDENTIALS检查环境变量。如果指定了此变量,它应该指向定义凭据的文件。为此目的获取凭证的最简单方法是使用Google Developers Console在API 和 Auth部分的Credentials子部分中创建一个服务帐户。创建一个服务帐户或选择现有帐户并选择“生成新的 JSON 密钥”。将环境变量设置为下载的 JSON 文件的路径。
  2. 如果您已在计算机上安装了 Google Cloud SDK 并运行了命令gcloud auth login,则您的身份可以用作代理来测试从该计算机调用 API 的代码。
  3. 如果您在 Google App Engine 生产中运行,则将使用与应用程序关联的内置服务帐户。
  4. 如果您在 Google Compute Engine 生产中运行,则将使用与虚拟机实例关联的内置服务帐户。
  5. 如果这些条件都不成立,则会发生错误。

看起来选项 #2 对您来说可能是最简单的(运行gcloud auth login以使您的代码在本地运行时使用您的 Google 帐户进行身份验证),但您也可以执行 #1。