首页 > 解决方案 > 使用 Spring Boot 获取数据并将其发布到 facebook 中的页面

问题描述

我正在尝试第一次从 Spring Boot 访问 facebook api,并且遇到了困难,感谢您对前景的任何帮助。

我正在尝试获取数据并将其发布到页面但无法使用 spring boot 但它使用图形 api 工作。

控制器

@RestController
@RequestMapping(value = "/fb")
public class FBController {

    private FBService fbService;

    @Autowired
    public FBController(FBService fbService) {
        this.fbService = fbService;
    }

    @GetMapping(value = "/getFacebookAuthorizeUrl")
    public String getFacebookAuthorizeUrl(){
        return fbService.getFacebookAuthorizeUrl();
    }

    @GetMapping(value = "/facebook")
    public void getAccessToken(@RequestParam String code){
        fbService.getAccessToken(code);
    }

    @GetMapping(value = "/userfeed")
    public PagedList<Post> getUserFeed(){
      return fbService.getUserFeed();
    }
    
    @PostMapping(value = "/message")
    public void postMessage(@RequestParam String message){
        fbService.postMessage(message);
    }

服务

public interface FBService {

    public String getFacebookAuthorizeUrl();
    public void getAccessToken(String code);   
    public PagedList<Post>  getUserFeed();    
    public void postMessage(String message);
}

服务实现

@Component
public class FBLocalService implements FBService{

    String accessToken;

    @Value("${spring.social.facebook.app-id}")
    private String facebookAppId;

    @Value("${spring.social.facebook.app-secret}")
    private String facebookSecretId;

    @Value("${redirect.url}")
    private String redirectUrl;

    private  FacebookConnectionFactory createConnection(){
        return new FacebookConnectionFactory(facebookAppId,facebookSecretId);
    }

    @Override
    public String getFacebookAuthorizeUrl() {
        OAuth2Parameters params = new OAuth2Parameters();
        params.setRedirectUri(redirectUrl);
        params.setScope("email");
        return createConnection().getOAuthOperations().buildAuthenticateUrl(params);
    }

   
    @Override
    public void getAccessToken(String code) {
        accessToken = createConnection().getOAuthOperations().exchangeForAccess(code,redirectUrl,null).getAccessToken();
    }

 @Override
    public PagedList<Post> getUserFeed() {        
        return new FacebookTemplate(accessToken).feedOperations().getFeed();
    }

@Override
    public void postMessage(String message) {
        new FacebookTemplate(accessToken).pageOperations().post(new PagePostData(message));
    }

在访问getUserFeed()没有提要时,它会返回一个空对象并postMessage()给出错误“用户不是 ID 测试页面的管理员”。

标签: spring-bootspring-social

解决方案


推荐阅读