纵观 spring social facebook api,EventOperations 提供
createEvent(java.lang.String name, java.lang.String startTime,
java.lang.String endTime)
将活动发布到 Facebook。
有没有办法发布活动的更多信息,比如活动图片和活动描述?
纵观 spring social facebook api,EventOperations 提供
createEvent(java.lang.String name, java.lang.String startTime,
java.lang.String endTime)
将活动发布到 Facebook。
有没有办法发布活动的更多信息,比如活动图片和活动描述?
查看createEvent
方法,它目前不支持附件(事件图像)。然而,它确实调用了 GraphApipublish
来实际发布事件:
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,并提供所有 {key,value}通过常规 HTTP POST 与 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
方法,该方法将采用 animage name
和 an image file path
,并将其作为附加 {key,value} 添加到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 => 他们会非常高兴:)
虽然当时提供的答案可能是正确的,但现在这个答案是误导和错误的。从 v2.1 开始,您不能通过 API 对事件进行CREATE/UPDATE/DELETE。
https://developers.facebook.com/docs/graph-api/reference/v2.1/event/