0

私はこのチュートリアルをほぼ逐語的に進めています:

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 を使用するための実用的なサンプルを知っている人はいますか? このサンプルは壊れていますか、それとも私ですか?

4

2 に答える 2

0

apps-marketplace-resources プロジェクトのhelloworld-javaの例は、App Engine と互換性がある必要があります。うまくいかない場合は、サンプルが古くなっている可能性があります。

ただし、OAuth 2 (OpenID シングル サインオン + 自動ホワイトリスト OAuth スコープではなく) を使用することは、Marketplace アプリケーションで受け入れられるアプローチになっていると理解しています。これは、(Google が作成したさまざまなクライアント ライブラリを介して) App Engine でより適切にサポートされます。

于 2012-07-19T18:39:20.587 に答える
0

チュートリアルを数回実行しましたが、最新ではありません。Eclipse をダウンロードし (私は intellij を使用)、Google ツールをインストールし、提供された UI を使用してアプリをマーケットプレイスに公開することで、App Marketplace で SSO を使用するテスト プロジェクトを取得することができました。それから、少なくとも私には何か仕事があります。

于 2012-07-21T13:10:56.903 に答える