1

oauth2を使用して、GoogleフュージョンテーブルのJavaクライアントを使用して、Javaで小さなデスクトップアプリケーションを作成しています。ユーザーが自分のGoogleアカウントにログインできるようにブラウザを開くことができますが、ログイン後にアプリケーションがクラッシュし、次の例外が発生します:

Please open the following address in your browser:
  https://accounts.google.com/o/oauth2/auth?client_id=611708255166-npbqbne71spdn8fa1tfsegbl2msi8lsk.apps.googleusercontent.com&redirect_uri=http://localhost:63909/Callback&response_type=code&scope=https://www.googleapis.com/auth/fusiontables
Attempting to open that address in the default browser now...
2013-08-21 11:27:28.076:WARN::/Callback?code=4/V8EpwmnrtF48VjXerABWDPZNyllS.ov1iLPSii_IVshQV0ieZDAps5vxCgQI
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.flushBuffer()V
    at com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver$CallbackHandler.handle(LocalServerReceiver.java:220)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

したがって、コールバック uri が機能していないようです。これはデスクトップ アプリケーションであるため、コールバック uri が Web サイトを指すようにしたくありませんが、何らかの形でアプリケーションに戻って、フュージョン テーブルへの呼び出しが終了したことをユーザーに知らせたいと考えています。

4

1 に答える 1

1

明白なことを述べる危険を冒して、エラーは「java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.flushBuffer」です

https://code.google.com/p/google-oauth-java-client/source/browse/google-oauth-client-jetty/src/main/java/の LocalServerReceiver.java:220 クラスを見ると、com/google/api/client/extensions/jetty/auth/oauth2/LocalServerReceiver.java?r=2c0510b314d24701810aa277f5d803a4368b2e20

220 行目は空白です。

したがって、ライブラリのバージョンを再確認します。

また、クラスパスを調べて、javax.servlet.http.HttpServletResponse が見つかった場所を確認してください。

于 2013-09-03T10:05:39.220 に答える