2015-11-03 107 views
0

我試圖運行the official Spring Social教程「原樣」,但我得到這個錯誤。我已經成功地使用相同的appid和密鑰進行登錄與python應用程序。網站網址是localhost:8080。任何指針?任何幫助,將不勝感激。春季社交Facebook Tuturial錯誤

的HelloController中

@Controller 
@RequestMapping("/") 
public class HelloController { 

    private Facebook facebook; 

    @Inject 
    public HelloController(Facebook facebook) { 
     this.facebook = facebook; 
    } 

    @RequestMapping(method=RequestMethod.GET) 
    public String helloFacebook(Model model) { 
     if (!facebook.isAuthorized()) { 
      return "redirect:/connect/facebook"; 
     } 

     model.addAttribute(facebook.userOperations().getUserProfile()); 
     PagedList<Post> homeFeed = facebook.feedOperations().getHomeFeed(); 
     model.addAttribute("feed", homeFeed); 

     return "hello"; 
    } 

} 

錯誤:

java.lang.NullPointerException: null 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
     at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) 
     at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
     at com.sun.proxy.$Proxy42.isAuthorized(Unknown Source) 
     at hello.HelloController.helloFacebook(HelloController.java:26) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:497) 
     at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:775) 
     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) 
     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) 
     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217) 
     at org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:106) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
     at org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:142) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at java.lang.Thread.run(Thread.java:745) 
+0

您可以發佈您'HelloController.java' – Arpit

+0

這裏有雲@Arpit – CESCO

+0

崩潰的'如果(!facebook.isAuthorized())' – CESCO

回答

0

嘗試Spring Social Example這是Spring 3.x實現,你只需要改變Facebook/Twitterapikeyapisecretcallback URL和scope按您的要求在application.propertieshere

+0

我使用spring 4和jdk 1.8。這個問題已經在這裏得到解答[http://stackoverflow.com/questions/31471698/running-imported-getting-started-project-accessing-facebook-data-appears-nullpoi]。它是一個spring-boot maven依賴的bug。它適用於1.2.3-RELEASE,但不適用於1.2.5和1.2.7,因爲這是我的應用程序正在使用的。現在我試圖找出如何超越它。 – CESCO

2

問題是Facebook bean不可用,因爲還沒有連接。我稍微修改了HelloController,並且讓它工作。

@Controller 
@RequestMapping("/") 
public class HelloController { 

    private Facebook facebook; 
    private ConnectionRepository repository; 

    @Inject 
    public HelloController(Facebook facebook, ConnectionRepository repository) { 
     this.facebook = facebook; 
     this.repository = repository; 
    } 

    @RequestMapping(method=RequestMethod.GET) 
    public String helloFacebook(Model model) { 
     if (repository.findConnections("facebook").isEmpty() || !facebook.isAuthorized()) { 
      return "redirect:/connect/facebook"; 
     } 

     model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile()); 
     PagedList<User> friends = facebook.friendOperations().getFriendProfiles(); 
     model.addAttribute("friends", friends); 

     return "hello"; 
    } 

} 

OTOH,教程然後請求來自Facebook過時的read_stream權限,所以你以後碰到其他問題。這就是爲什麼我的代碼列出了朋友而不是家庭飼料。

+0

我已經離開Java世界一段時間了,但我要儘快測試它 – CESCO