2013-08-03 50 views
0

我使用Spring社會的Facebook與下面的代碼:春天Facebook的社交 - HttpClientErrorException:400 OK

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

有什麼辦法?

+0

這真的看起來像一個Facebook的bug。我不認爲Spring客戶會發明像「400 OK」這樣的廢話。 – chrylis

+0

你能看到響應的正文/標題嗎? – CorayThan

+0

@CorayThan,我添加身體和狀態代碼的圖像。謝謝。 – vctlzac

回答

0

使用maven解決了問題。我有依賴問題。我用maven創建了一個新項目。 Maven正確下載了所有依賴關係,然後 我將所有jar轉移到真正的項目並且工作!