他の人がこれを助けることができるので、私はこの質問のロットと投稿ソリューションを分析します。 post.getExtraData()。get( "full_picture")を使用して取得できる余分なデータの一部として、完全な画像を返します。コードスナップショットは次のとおりです
public PagedList<Post> getPostByAccountId(final String accountId) {
LOGGER.debug("facebook accountId: ", accountId);
FacebookTemplate facebook = new FacebookTemplate("<access token>");
String[] ALL_POST_FIELDS = { "id", "actions", "admin_creator", "application", "caption", "created_time", "description", "from", "icon", "is_hidden", "is_published",
"link", "message", "message_tags", "name", "object_id", "picture", "full_picture", "place", "privacy", "properties", "source", "status_type", "story", "to",
"type", "updated_time", "with_tags", "shares" };
URIBuilder uriBuilder = URIBuilder.fromUri(facebook.getBaseGraphApiUrl() + "me/posts");
uriBuilder = uriBuilder.queryParam("limit", String.valueOf(2000));
uriBuilder.queryParam("fields", org.springframework.util.StringUtils.arrayToCommaDelimitedString(ALL_POST_FIELDS));
URI uri = uriBuilder.build();
JsonNode jsonNode = (JsonNode) facebook.getRestTemplate().getForObject(uri, JsonNode.class);
PagedList<Post> posts = new DeserializingPosts().deserializeList(jsonNode, null, Post.class);
return posts;
}
投稿からfull_pictureをフェッチするには
String picture = post.getPicture();
picture = post.getExtraData().get("full_picture") != null ? post.getExtraData().get("full_picture").toString() : picture;
deserializingObjectクラスの詳細:
public class DeserializingPosts extends AbstractOAuth2ApiBinding {
private ObjectMapper objectMapper = new ObjectMapper();
/**
*
* @param jsonNode
* @param postType
* @param type
* @return
*/
public <T> PagedList<T> deserializeList(JsonNode jsonNode, String postType, Class<T> type) {
JsonNode dataNode = jsonNode.get("data");
List posts = new ArrayList();
for (Iterator iterator = dataNode.iterator(); iterator.hasNext();) {
posts.add(deserializePost(postType, type, (ObjectNode) iterator.next()));
}
if (jsonNode.has("paging")) {
JsonNode pagingNode = jsonNode.get("paging");
PagingParameters previousPage = PagedListUtils.getPagedListParameters(pagingNode, "previous");
PagingParameters nextPage = PagedListUtils.getPagedListParameters(pagingNode, "next");
return new PagedList(posts, previousPage, nextPage);
}
return new PagedList(posts, null, null);
}
/**
*
* @param postType
* @param type
* @param node
* @return
*/
public <T> T deserializePost(String postType, Class<T> type, ObjectNode node) {
try {
if (postType == null) {
postType = determinePostType(node);
}
node.put("postType", postType);
node.put("type", postType);
MappingJackson2HttpMessageConverter converter = super.getJsonMessageConverter();
this.objectMapper = new ObjectMapper();
this.objectMapper.registerModule(new FacebookModule());
converter.setObjectMapper(this.objectMapper);
return this.objectMapper.reader(type).readValue(node.toString());
} catch (IOException shouldntHappen) {
throw new UncategorizedApiException("facebook", "Error deserializing " + postType + " post", shouldntHappen);
}
}
/**
*
* @param node
* @return
*/
private String determinePostType(ObjectNode node) {
if (node.has("type")) {
try {
String type = node.get("type").textValue();
Post.PostType.valueOf(type.toUpperCase());
return type;
} catch (IllegalArgumentException e) {
return "post";
}
}
return "post";
}
}
春社会のFacebook |ユーザーの投稿やページから完全な画像を取得します。 –