我试图使用spring.io社交访问Facebook,但isAuthorized()方法失败

时间:2014-11-05 16:45:44

标签: java facebook spring

我正在尝试使用https://spring.io/guides/gs/accessing-facebook/访问Facebook。

我使用“导入Spring入门内容”在Spring Tool Suite中导入了该应用程序。我可以使用“gradlew bootRun”运行应用程序,也可以使用“gradlew build”。

我遇到的问题是:似乎在HelloController类中测试

if (!facebook.isAuthorized()) 

不起作用。应用程序继续执行语句

,而不是执行其余语句并返回“hello”视图
return "redirect:/connect/facebook"

好像.isAutorized()方法失败了。

然而,当我在同一个webbrowser www.facebook.com上打开时,我的Facebook(登录)Facebook主页。使用该应用程序登录Facebook似乎正常工作。请注意,在我测试应用程序之前,我明确地从Facebook注销。

请注意:

  • 我已在developer.facebook.com中注册了该应用程序。
  • 我将我的Facebook AppID和AppSecret提交到application.properties文件中。
  • 我使用Vitalwerks No-IP在Facebook Apps Site URL中提交了一个hostname.domain。在我的路由器中,我将公共IP地址端口80映射到服务器的内部IP地址 端口8080.我可以使用hostname.domain访问该应用程序。

我做错了什么?控制器类看起来像这样:

@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";
}

}

1 个答案:

答案 0 :(得分:1)

在Facebook Apps高级设置中,我的应用程序被配置为“本机或桌面应用程序”。这导致OAuth调用期间出现错误400。