Глядя на метод createEvent
, в настоящее время он не поддерживает вложение (изображение события).Однако он действительно вызывает GraphApi publish
для фактической публикации события:
public String createEvent(String name, String startTime, String endTime) {
requireAuthorization();
MultiValueMap<String, Object> data = new LinkedMultiValueMap<String, Object>();
data.set("name", name);
data.set("start_time", startTime);
data.set("end_time", endTime);
return graphApi.publish("me", "events", data);
}
graphApi
.publish (...) (который реализован в FacebookTemplate ) будет поддерживать что угодно как пара {ключ, значение}, которую Facebook готов принять, так как он просто делегирует RestTemplate и передает все пары {ключ, значение} в Facebook через обычный HTTP POST:
public String publish(String objectId, String connectionType, MultiValueMap<String, Object> data) {
MultiValueMap<String, Object> requestData = new LinkedMultiValueMap<String, Object>(data);
URI uri = URIBuilder.fromUri(GRAPH_API_URL + objectId + "/" + connectionType).build();
Map<String, Object> response = getRestTemplate().postForObject(uri, requestData, Map.class);
return (String) response.get("id");
}
Следовательно, вы можете расширить EventTemplate и добавить еще один метод createEvent
, который бы принял image name
и image file path
и добавил бы его как дополнительный {ключ,value} to data
MultiMap:
data.set( "@" + imageName, "@" + imagePath )
Следовательно, метод должен выглядеть примерно так:и т. д. Если у вас есть эта работа, которая кажется довольно простой, вы можете пожертвовать / внести ее обратно в Spring Social => они были бы очень рады:)