0

纵观 spring social facebook api,EventOperations 提供

    createEvent(java.lang.String name, java.lang.String startTime, 
                                                      java.lang.String endTime)

将活动发布到 Facebook。

有没有办法发布活动的更多信息,比如活动图片和活动描述?

4

2 回答 2

3

查看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} 添加到dataMultiMap:

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 => 他们会非常高兴:)

于 2011-10-20T03:58:34.773 回答
0

虽然当时提供的答案可能是正确的,但现在这个答案是误导和错误的。从 v2.1 开始,您不能通过 API 对事件进行CREATE/UPDATE/DELETE

https://developers.facebook.com/docs/graph-api/reference/v2.1/event/

于 2016-08-11T10:51:50.323 回答