I am trying to access facebook api from spring boot for first time and have hit a wall appreciate any help in the prospect.
I'm trying to get and post data to a page but unable to do using spring boot but its working using graph api.
Controller
@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);
}
Service
public interface FBService {
public String getFacebookAuthorizeUrl();
public void getAccessToken(String code);
public PagedList<Post> getUserFeed();
public void postMessage(String message);
}
ServiceImpl
@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));
}
while accessing the getUserFeed() no feeds are returned its an empty object and postMessage() gives error "The user is not an administrator of the page with ID Test".