查看春季社交facebook api,EventOperations提供
createEvent(java.lang.String name, java.lang.String startTime,
java.lang.String endTime)
将活动发布到Facebook。
有没有办法发布事件的更多信息,比如事件图像和事件描述?
答案 0 :(得分:3)
查看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准备好的{key,value}对接受,因为它只是委托给RestTemplate,并通过常规HTTP POST将所有{key,value}对提供给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并添加另一个createEvent
方法,该方法需要image name
和image file path
,并将其添加为额外的{key,值}到data
MultiMap:
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);
}
这当然不包括您可能想要做的任何可能的验证等。 一旦你有了这个工作,这看起来非常简单,你可以捐赠/贡献给Spring Social =&gt;他们会很高兴:)。
答案 1 :(得分:0)
虽然当时提供的答案可能是正确的,但现在这个答案是误导和错误的。从v2.1起,您无法通过API执行事件的创建/更新/删除。
https://developers.facebook.com/docs/graph-api/reference/v2.1/event/