0

我正在逐字阅读本教程:

https://developers.google.com/google-apps/marketplace/tutorial_java

  • 部署到我的应用引擎应用 id nimbits-domains。我在 web.xml 中设置了我的消费者密码和 api 密钥。可下载的示例编译和部署正常。当我通过市场将应用程序添加到我的域,然后启动应用程序时,我的应用程序引擎日志中出现错误:

    来自 servlet javax.servlet.UnavailableException 的未捕获异常:com.google.inject.ProvisionException:Guice 配置错误:

    1) Error injecting constructor, java.lang.NullPointerException
      at com.google.code.samples.apps.marketplace.openid.appengine.AppEngineTrustsRootProvider.<init>(AppEngineTrustsRootProvider.java:33)
      while locating com.google.code.samples.apps.marketplace.openid.appengine.AppEngineTrustsRootProvider
      while locating com.google.step2.xmlsimplesign.TrustRootsProvider
        for parameter 0 at com.google.step2.xmlsimplesign.CachedCertPathValidator.<init>(CachedCertPathValidator.java:61)
      while locating com.google.step2.xmlsimplesign.CachedCertPathValidator
        for parameter 0 at com.google.step2.xmlsimplesign.Verifier.<init>(Verifier.java:51)
      while locating com.google.step2.xmlsimplesign.Verifier
        for parameter 1 at com.google.step2.discovery.LegacyXrdsResolver.<init>(LegacyXrdsResolver.java:91)
      while locating com.google.step2.discovery.LegacyXrdsResolver
      while locating com.google.step2.discovery.XrdDiscoveryResolver
        for parameter 1 at com.google.step2.discovery.Discovery2.<init>(Discovery2.java:167)
      while locating com.google.step2.discovery.Discovery2
        for parameter 1 at com.google.step2.ConsumerHelper.<init>(ConsumerHelper.java:60)
      while locating com.google.step2.ConsumerHelper
    

我想知道示例代码是否已过时。特别是 GuiceModule 中的这种方法:

 /**
     * Overrides for running on GAE.  Need to ue special HTTP fetchers & explicitly set the trust roots
     * since the built-in java equivalents are not available when running in GAE's sandbox.
     */
    public static class AppEngineModule extends AbstractModule {
        @Override
        protected void configure() {
            bind(HttpFetcher.class)
                .to(AppEngineHttpFetcher.class).in(Scopes.SINGLETON);
            bind(TrustRootsProvider.class)
                .to(AppEngineTrustsRootProvider.class).in(Scopes.SINGLETON);
            bind(org.openid4java.util.HttpFetcher.class)
                .to(Openid4javaFetcher.class)
                .in(Scopes.SINGLETON);
         }
    }

有谁知道将 OpenID 和 Google Apps 与 Java 和 GAE 一起使用的工作示例?这个样品是坏的还是我的?

4

2 回答 2

0

apps-marketplace-resources 项目中的helloworld-java示例应该与 App Engine 兼容。如果它对您不起作用,那么样本可能已过时。

但是,我的理解是,使用 OAuth 2(而不是 OpenID 单点登录 + 自动将 OAuth 范围列入白名单)现在是市场应用程序可接受的方法。这在 App Engine 上得到了更好的支持(通过各种 Google 编写的客户端库)。

于 2012-07-19T18:39:20.587 回答
0

我多次阅读教程,它已经过时了。通过下载 eclipse、(我使用 intellij)安装 google 工具,并使用提供的 UI 将应用程序发布到市场,我能够在 App Marketplace 上获得一个使用 SSO 的测试项目。那么至少我有一些工作要做。

于 2012-07-21T13:10:56.903 回答