Facebook graph api 如何获得Facebook页面';s与Spring Social的活动

Facebook graph api 如何获得Facebook页面';s与Spring Social的活动,facebook-graph-api,spring-boot,spring-social-facebook,Facebook Graph Api,Spring Boot,Spring Social Facebook,我的目标是检索某个Facebook页面和用户配置文件的事件列表。列表应该只返回将来的事件。我似乎找不到使用Spring社交Facebook API的方法。我被以下代码卡住了 使用Spring社交Facebook v3.0.0.M1 @Controller @RequestMapping("/") public class HelloController { private Facebook facebook; private ConnectionRepository conne

我的目标是检索某个Facebook页面和用户配置文件的事件列表。列表应该只返回将来的事件。我似乎找不到使用Spring社交Facebook API的方法。我被以下代码卡住了

使用Spring社交Facebook v3.0.0.M1

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

    private Facebook facebook;
    private ConnectionRepository connectionRepository;

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

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

        //Should  only return events in the future
        PagingParameters pagingParameters = new PagingParameters(10,0,0L,0L);
        PagedList<Event> userEvents = facebook.eventOperations().search("noCriteriaNeed",pagingParameters);
        PagedList<Event> pageEventfacebooks = facebook.pageOperations().facebookOperations("pageID").eventOperations().search("noCriteriaNeed",pagingParameters);


        model.addAttribute("UserfacebookEvents", userEvents);
        model.addAttribute("PagefacebookEvents", pageEventfacebooks);
        return "hello";
    }

}
@控制器
@请求映射(“/”)
公共类Hello控制器{
私人脸书;
私有连接存储库连接存储库;
公共HelloController(Facebook、ConnectionRepository、ConnectionRepository){
this.facebook=facebook;
this.connectionRepository=connectionRepository;
}
@GetMapping
公共字符串helloFacebook(模型){
if(connectionRepository.findPrimaryConnection(Facebook.class)==null){
返回“重定向:/connect/facebook”;
}
//应该只在将来返回事件
PagingParameters PagingParameters=新的PagingParameters(10,0,0L,0L);
PagedList userEvents=facebook.eventOperations().search(“noCriteriaNeed”,pagingParameters);
PagedList pageEventfacebooks=facebook.pageOperations().facebookOperations(“pageID”).eventOperations().search(“noCriteriaNeed”,pagingParameters);
addAttribute(“UserfacebookEvents”,userEvents);
addAttribute(“PagefacebookEvents”,pageEventfacebooks);
回复“你好”;
}
}

我通过使用更灵活的RestOperations API解决了这个问题

package com.housescent.almanac.web.controller;

import com.housescent.almanac.web.model.EventData;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

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

    private Facebook facebook;
    private ConnectionRepository connectionRepository;

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

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

        EventData userEvents = facebook.restOperations().getForObject("https://graph.facebook.com/v2.8/pageid/events",EventData.class);


        model.addAttribute("PagefacebookEvents", userEvents);
        return "hello";
    }

}

我通过使用更灵活的RestOperations API解决了这个问题

package com.housescent.almanac.web.controller;

import com.housescent.almanac.web.model.EventData;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

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

    private Facebook facebook;
    private ConnectionRepository connectionRepository;

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

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

        EventData userEvents = facebook.restOperations().getForObject("https://graph.facebook.com/v2.8/pageid/events",EventData.class);


        model.addAttribute("PagefacebookEvents", userEvents);
        return "hello";
    }

}

除了Siya的回答之外,这里还有一个
EventData
类的简单实现(只是一个包含
事件
对象的列表):


除了Siya的回答之外,这里还有一个
EventData
类的简单实现(只是一个包含
事件
对象的列表):


Afaik获取事件对象列表的唯一方法是调用
EventOperations.getCreated()
,它将为当前连接的用户返回一个列表。但奇怪的是,为了获取任何其他页面或用户的事件,该框架并没有提供任何解决方案。因此,我想您建议的解决方案是可行的。Afaik获取事件对象列表的唯一方法是调用
EventOperations.getCreated()
,它为当前连接的用户返回一个列表。但奇怪的是,为了获取任何其他页面或用户的事件,该框架并没有提供任何解决方案。所以我想你提出的解决方案是正确的。
https://graph.facebook.com/v2.12/[pageid]/events?
fields=id,name,message,description,place,start_time,end_time,picture,cover