Spring Social - Facebook.isAuthorized抛出NullPointerException

时间:2015-07-11 22:49:29

标签: spring facebook twitter spring-social

我正在为一个类似于社交中心的课程制作一个Web应用程序,我正在使用带有Spring的Java和Spring社交模块。该应用程序的关键是有一个地方,您可以从Facebook和Twitter帐户浏览提要。因此,目前该应用程序允许创建帐户,登录,注销和浏览供稿。我没有使用spring social进行登录,因为该应用程序使用特定于应用程序的帐户,但在登录后,用户可以选择将他/她的facebook或Twitter帐户链接到应用程序。 该应用程序成功连接到Facebook和Twitter,并毫无问题地检索提要。我的项目基于可以在github Spring social quickstart project中找到的spring社交快速入门。 问题本身是当用户进入提要页面而没有将twitter或facebook帐户链接到应用程序时,它会抛出NullPointerException。这是发生异常的方法的代码

@RequestMapping(value={"/", "feed"}, method = RequestMethod.GET)
public String llenarFeed(Principal principal, Model model){
    boolean emptyFeed = true;
    if(facebook != null){
            if( facebook.isAuthorized()){
                model.addAttribute("fbFeed", facebook.feedOperations().getHomeFeed());
                model.addAttribute("perfil", facebook.userOperations().getUserProfile());
                emptyFeed = false;
            }
    }
    if (twitter  != null) {
        model.addAttribute("timeline", twitter.timelineOperations().getHomeTimeline());
        emptyFeed = false;
    }
    model.addAttribute("usuario", usuarioService.loadUsuarioByUsername(principal.getName()));
    return "feed";
}

问题发生在这一行if(facebook.isAuthorized()) 所以我知道facebook不是null,但是调用isAuthorized会导致NullPointerException,问题是我该如何解决呢?

1 个答案:

答案 0 :(得分:1)

我用try-catch解决了。当收到错误时,它会重定向到连接页面。

@RequestMapping(value={"/", "feed"}, method = RequestMethod.GET)
public String llenarFeed(Principal principal, Model model){
    boolean emptyFeed = true;
    try{
       if(facebook != null){
            if( facebook.isAuthorized()){
                model.addAttribute("fbFeed", facebook.feedOperations().getHomeFeed());
                model.addAttribute("perfil", facebook.userOperations().getUserProfile());
                emptyFeed = false;
            }
      }
  }
  catch{
     return "redirect:/connect/facebook";
}
    if (twitter  != null) {
        model.addAttribute("timeline", twitter.timelineOperations().getHomeTimeline());
        emptyFeed = false;
    }
    model.addAttribute("usuario", usuarioService.loadUsuarioByUsername(principal.getName()));
    return "feed";
}