Spring Social Facebook - HttpClientErrorException:400 OK

时间:2013-08-03 00:50:17

标签: java facebook spring

我正在使用Spring Social Facebook以下代码:

    FacebookConnectionFactory connectionFactory = new FacebookConnectionFactory(
        "XXXXXXXX", "YYYYYYYY");
OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations();

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException {

    String code = request.getParameter("code");

    if (StringUtil.isNotBlankStr(code)) {

        AccessGrant accessGrant = oauthOperations.exchangeForAccess(code,
                "http://localhost:8888/Login", null);
        Connection<Facebook> connection = connectionFactory
                .createConnection(accessGrant);

        Facebook facebook = connection != null ? connection.getApi()
                : new FacebookTemplate();

        facebook.feedOperations().updateStatus(
                "I'm trying out Spring Social!");
    } else {

        OAuth2Parameters params = new OAuth2Parameters();
        params.setRedirectUri("http://localhost:8888/Login");

        params.setScope("publish_stream");
        params.setScope("email");
        params.setScope("offline_access");

        String authorizeUrl = oauthOperations.buildAuthorizeUrl(
                GrantType.AUTHORIZATION_CODE, params);
        response.sendRedirect(authorizeUrl);
        return;
    }

}

执行行时:

oauthOperations.exchangeForAccess ...

收到此错误:

0:47:32,942 WARN  [org.springframework.web.client.RestTemplate] - POST request for     "https://graph.facebook.com/oauth/access_token" resulted in 400 (OK); invoking error handler
02/08/2013 21:47:34 com.google.apphosting.utils.jetty.JettyLogger warn
AVISO: /Login
org.springframework.web.client.HttpClientErrorException: 400 OK
    at     org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseError    Handler.java:76)
    at     org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:486)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:443)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:401)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:279)
at org.springframework.social.facebook.connect.FacebookOAuth2Template.postForAccessGrant(FacebookOAuth2Template.java:57)
at org.springframework.social.oauth2.OAuth2Template.exchangeForAccess(OAuth2Template.java:131)
at br.com.caronagem.servlet.CaronagemSSFLoginFB.doGet(CaronagemSSFLoginFB.java:40)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.googlecode.objectify.cache.AsyncCacheFilter.doFilter(AsyncCacheFilter.java:59)
at com.googlecode.objectify.ObjectifyFilter.doFilter(ObjectifyFilter.java:49)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:409)
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:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

Message in browser

任何方式?

1 个答案:

答案 0 :(得分:0)

使用maven解决了问题。我有依赖问题。我用maven创建了一个新项目。然后,Maven正确下载所有依赖项 我将所有jar转移到真实的项目并且有效!