2011-10-20 19 views

答えて

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は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 nameimage 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); 
} 

これをあなたがやりたいかもしれないバリデーションは含まれていません。 この作業をしたら、かなり簡単ですが、春の社会に寄付することができます=>彼らはとても満足しています: )

+0

非常に詳細な説明をありがとう。私は今遊んでいますが、実際の画像にいくつかの問題があり、他のイベント情報は公開されていますが、画像はありません。さらに調査してください。 – Micor

+0

あなたの 'imagePath'は正しいですか?問題や例外はありますか? – tolitius

+0

すべてが正しいです、私はファイルを開始し、ちょうど – Micor

関連する問題