首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Social - Facebook集成

Spring Social - Facebook集成
EN

Stack Overflow用户
提问于 2016-04-25 12:39:33
回答 1查看 836关注 0票数 1

我需要把spring和Facebook结合起来,并从我的公司页面上获取提要/帖子。

代码段

代码语言:javascript
复制
public static void main(String[] args) {
        Facebook facebook1 = new FacebookTemplate("");
        FeedOperations feedOperations = facebook1.feedOperations();
        PagedList<Post> feeds = feedOperations.getFeed();

        for (Post post : feeds) {
            System.out.println("@" + post.getName());
        }
    }

我已经在"https://developers.facebook.com“上生成了键,但是当我在FacebookTemplate("");中输入相同的键并运行程序时,它会抛出一个错误。

代码语言:javascript
复制
Exception in thread "main" org.springframework.social.InvalidAuthorizationException: Invalid OAuth access token.
    at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleFacebookError(FacebookErrorHandler.java:81)
    at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleError(FacebookErrorHandler.java:59)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:616)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:572)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:547)

在这方面请帮助我, 1.)我可以在哪里以及如何生成密钥。 2.)如何才能访问用户提要。我的秘密密钥可能需要访问那个用户配置文件。 3.)在那里我需要提供用户

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-05 08:10:08

直接使用FacebookTemplate构造函数将为您提供一个未经身份验证的连接(即,不带OAuth)连接,该连接将用于不需要身份验证的查询。这就是为什么您获得了授权异常,访问提要需要身份验证(经过身份验证的facebook用户,它为应用程序提供了执行这些操作的适当授权)。

请注意,您需要一种方法来获得用户的访问令牌进行身份验证,在控制台应用程序中这样做可能会很棘手。然而,在WebApplication中使用Social是非常容易的,基本上您需要的是

代码语言:javascript
复制
@Controller
@RequestMapping("/")
public class HelloController {

    private Facebook facebook;
    private ConnectionRepository connectionRepository;

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

    @RequestMapping(method=RequestMethod.GET)
    public String helloFacebook(Model model) {
        if (connectionRepository.findPrimaryConnection(Facebook.class) == null) {
            return "redirect:/connect/facebook";
        }

        model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile());
        PagedList<Post> feed = facebook.feedOperations().getFeed();
        model.addAttribute("feed", feed);
        return "hello";
    }

}

(从这里取来的示例:https://github.com/spring-guides/gs-accessing-facebook),该配置具有spring.social.facebook.appIdspring.social.facebook.appSecret的正确配置。

但是,要使用控制台应用程序测试查询,您可以

  1. 在Facebook的api页面上创建应用程序。
  2. 转到https://developers.facebook.com/tools/accesstoken/
  3. 使用FacebookTemplate-Constructor中的标记

这将永远是你的用户,所以你可能不想发布这个应用程序到野外;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36840857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档