メソッドを見るとcreateEvent
、現在、添付ファイル(イベント画像)はサポートされていません。ただしpublish
、実際にイベントを公開するためにGraphApiを呼び出します。
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に実装されている)は、RestTemplateに委任し、すべての{key、value}にフィードするため、Facebookが受け入れる準備ができている{key、value}ペアとしてすべてをサポートします。通常のHTTPPOSTを介してFacebookとペアリングします。
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を拡張して、とを取り、それを追加の{key、value}としてMultiMapに追加する別のメソッドを追加できます。createEvent
image name
image file path
data
data.set( "@" + imageName, "@" + imagePath )
したがって、このメソッドは次のようになります。
public String createEvent( String name,
String startTime,
String endTime,
String imageName,
String imagePath ) { // or maybe even "File image", where you would derive the path
requireAuthorization();
MultiValueMap<String, Object> data = new LinkedMultiValueMap<String, Object>();
data.set("name", name);
data.set("start_time", startTime);
data.set("end_time", endTime);
data.set( "@" + imageName, "@" + imagePath ); // <<< adding this line
return graphApi.publish("me", "events", data);
}
もちろん、これにはあなたがやりたいと思うかもしれない検証などは含まれていません。これがうまくいくと、かなり簡単に思えますが、SpringSocialに寄付/寄付することができます=>彼らはとても喜んでいます:)