i have been trying to publish videos on a facebook page's story, but i havent been successful, i have tried using their apis and integrating with restfb as well, As for restfb, i was able to post on a facebook page's timeline, but not on their story, i have included the code showing my implementation using the facebook api and rest fb, thanks for checking out, i appreciate any assistance
public void postVideo(String contentUrl) throws MalformedURLException, FileNotFoundException, FacebookOAuthException { Users loggedInUser = userService.getCurrentUser(); Socials social = socialsService.getSocialByPlatform(SocialPlatform.FACEBOOK); UserSocials userSocial= userSocialsService.findUserSocial(loggedInUser, social).orElseThrow(()-> new UserException("User social not found")); FacebookClient defaultFacebookClient = new DefaultFacebookClient(userSocial.getAccessToken(), Version.LATEST); File videoFile = new File("uploads/" + contentUrl); if (!videoFile.exists()) { throw new FileNotFoundException("Video file not found at specified path."); } FileInputStream fileInputStream = new FileInputStream(videoFile); // Implementation using facebook api // MultiValueMap<String, Object> requestBody = new LinkedMultiValueMap<>(); // requestBody.add("file", new FileSystemResource("uploads/" + contentUrl)); // HttpHeaders headers = new HttpHeaders(); // headers.setContentType(MediaType.MULTIPART_FORM_DATA); // FBVideoStoryStartResponse fbVideoStoryStartResponse = webClient.post() // .uri("https://graph.facebook.com/v18.0/"+userSocial.getSocialUserId()+"/video_stories", uriBuilder -> uriBuilder // .queryParam("upload_phase", "start") // .build()) // .retrieve() // .bodyToMono(FBVideoStoryStartResponse.class) // .block(); // System.out.println(fbVideoStoryStartResponse); // if(fbVideoStoryStartResponse != null){ // FBVideoStoryUploadStatus fbVideoStoryUploadStatus = webClient.post() // .uri("https://rupload.facebook.com/video-upload/v18.0/" + fbVideoStoryStartResponse.getVideoId()) // .headers(httpHeaders -> httpHeaders.addAll(headers)) // Add the headers to the request // .bodyValue(requestBody) // .retrieve() // .bodyToMono(FBVideoStoryUploadStatus.class) // .block(); // System.out.println(fbVideoStoryUploadStatus); // assert fbVideoStoryUploadStatus != null; // if(fbVideoStoryUploadStatus.isSuccess()){ // FBVideoStoryFinishResponse fbVideoStoryFinishResponse = webClient.post() // .uri("https://graph.facebook.com/v18.0/"+userSocial.getSocialUserId()+"/video_stories", uriBuilder -> uriBuilder // .queryParam("video_id", fbVideoStoryStartResponse.getVideoId()) // .queryParam("upload_phase", "finish") // .build()) // .retrieve() // .bodyToMono(FBVideoStoryFinishResponse.class) // .block(); // System.out.println(fbVideoStoryFinishResponse); // } // } // Implementation using restfb FBVideoStoryStartResponse fbVideoStoryStartResponse1 = defaultFacebookClient.publish(userSocial.getSocialUserId() + "/video_stories", FBVideoStoryStartResponse.class, Parameter.with("upload_phase", "start")); String videoUploadID = fbVideoStoryStartResponse1.getVideoId(); System.out.println(videoUploadID); GraphResponse graphResponse = defaultFacebookClient.publish(videoUploadID, GraphResponse.class, BinaryAttachment.with(videoFile.getName(), fileInputStream)); GraphResponse graphResponse1 = defaultFacebookClient.publish(userSocial.getSocialUserId() + "/video_stories", GraphResponse.class, Parameter.with("video_id", videoUploadID), Parameter.with("upload_phase", "finish"), Parameter.with("video_state", "PUBLISHED"), Parameter.with("description", "A short description text")); try { fileInputStream.close(); } catch (IOException e) { throw new RuntimeException(e); } }
So using restfb, i get the error "There is a problem uploading your video, Please try again with another file" and i have tried with multiple files below a minute but still the same result.