私はこのチュートリアルをほぼ逐語的に進めています:
https://developers.google.com/google-apps/marketplace/tutorial_java
アプリ エンジン アプリ ID nimbits-domains にデプロイします。web.xml にコンシューマ シークレットと API キーを設定しました。ダウンロード可能なサンプルは正常にコンパイルおよびデプロイされます。マーケットプレイス経由でアプリをドメインに追加し、アプリを起動すると、アプリ エンジン ログに次のエラーが表示されます。
サーブレットからのキャッチされない例外 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);
}
}
Java と GAE で OpenID と Google Apps を使用するための実用的なサンプルを知っている人はいますか? このサンプルは壊れていますか、それとも私ですか?