我将逐字逐句阅读本教程:
https://developers.google.com/google-apps/marketplace/tutorial_java
部署到我的应用引擎应用ID nimbits-domains。我在我的web.xml中设置了我的消费者秘密和api密钥。可下载的示例编译并部署好。当我通过市场将应用程序添加到我的域中,然后启动应用程序时,我的应用程序引擎日志中出现错误:
来自servlet的未捕获异常 javax.servlet.UnavailableException:com.google.inject.ProvisionException:Guice provision errors:
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 with Java和GAE的工作示例? 这个样本是破碎还是我?
答案 0 :(得分:0)
apps-marketplace-resources项目中的helloworld-java示例应与App Engine兼容。如果它对您不起作用,那么样本可能已经过时了。
但是,我的理解是,使用OAuth 2(而不是OpenID单点登录+自动白名单OAuth范围)现在是Marketplace应用程序可接受的方法。这在App Engine上得到了更好的支持(通过各种谷歌创作的客户端库)。
答案 1 :(得分:0)
我多次阅读本教程并且已经过时了。通过下载eclipse,(我使用intellij)安装谷歌工具,并使用提供的UI将应用程序发布到市场,我能够在App Marketplace上使用SSO进行测试项目。那么至少我有一些可以使用的东西。