0

データを取得するために Google+ アカウントにアクセスしようとしています。今、サンプルを見つけましたが、正しく動作しません...

ここを参照してください:

私の問題は70行目です!

このプログラムを実行しようとすると、次の例外がスローされます

Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
at com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver.getRedirectUri(LocalServerReceiver.java:97)
at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:71)
at com.google.api.services.samples.plus.cmdline.PlusSample.authorize(PlusSample.java:70)
at com.google.api.services.samples.plus.cmdline.PlusSample.main(PlusSample.java:77)
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more

今、私は google-plus-java-starter プロジェクトを試しました。

コンソールに登録し、client_id と client_secret と API キーを取得しましたが、例外がスローされました。

Attempting to open a web browser to start the OAuth2 flow
Once you authorize please enter the code here: [entered myCode here]

============== Get my Google+ profile ==============

Okt 15, 2012 2:00:06 PM Sample getProfile
Schwerwiegend: {
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
}
],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}

Exception in thread "main" java.io.IOException: Stream closed
at java.util.zip.GZIPInputStream.ensureOpen(Unknown Source)
at java.util.zip.GZIPInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at com.google.api.client.http.HttpResponse.parseAsString(HttpResponse.java:464)
at Sample.main(Sample.java:45)
4

2 に答える 2

4

さて、あなたの問題に対する簡単な答えは、この原因にあります:

Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest

Java ランタイムがHttpServletRequestクラスを探していますが、クラスパスで見つかりません。

HttpServletRequestJava EE フレームワーク (サーブレット フレームワーク) でのみ見つけることができ、Web コンテナー/アプリケーション サーバーを介してのみ呼び出すことができます (サーブレットであるため)。

あなたがしようとしているのは、OAuth 2 ダンスを実行することです。このダンスでは、サービス プロバイダー (リクエストを送信したサーバー) が Web アプリケーションへの HTTP リダイレクトを実行します。私が言おうとしているのは、OAuth ダンスは Web アプリケーションとして実行する必要があるということです。

Sampleスタンドアロンとして実行するには、基本的に Web コンテナーの外部でサーブレットを実行します。これは基本的に、ポートをリッスンする HTTP レイヤーを記述し、HTTP プロトコルを変換し、HTTP 応答HttpServletRequestを受信HttpServletResponseして​​戻す必要があることを意味します (関連する SO の質問を参照)。

あなたが提供したサンプル リンクがどのように実行されたかはわかりませんが、サーブレット コンテナーが使用されたことは確かです (おそらくテスト ケースを通じて?)。

幸運を!:-)

于 2012-10-09T11:51:50.950 に答える
2

Plus Java スターターの例もここで入手できます。

https://code.google.com/p/google-plus-java-starter/

これらには、動作するはずのコマンド ラインの例が含まれています。

于 2012-10-10T17:02:21.707 に答える