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に、それだけの代表として、受け入れる準備ができて、そして通常の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
メソッドを追加することができます、すなわち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);
}
これをあなたがやりたいかもしれないバリデーションは含まれていません。 この作業をしたら、かなり簡単ですが、春の社会に寄付することができます=>彼らはとても満足しています: )
非常に詳細な説明をありがとう。私は今遊んでいますが、実際の画像にいくつかの問題があり、他のイベント情報は公開されていますが、画像はありません。さらに調査してください。 – Micor
あなたの 'imagePath'は正しいですか?問題や例外はありますか? – tolitius
すべてが正しいです、私はファイルを開始し、ちょうど – Micor