0

さて、私はjavascriptAPIを使用してFacebookGraphAPIを使用しています。私はユーザーのプロファイルではなく、ユーザーのページでイベントを作成することに取り組んできましたが、それは問題なく機能しています。ただし、イベントとともにプロフィール写真をアップロードしようとすると、イベントは正常に作成されますが、その写真がありません。

私はいくつかの解決策を試しましたが、うまくいくものをまだ見つけていません。

これが私が現在持っているものです:

 function SubmitEvent(descrip, name, start,end, line1, city, state, zip, lat, lon,path)

    {
           var eventMsg = document.getElementById('event-msg');

            var myJsonEvent = {
                "name": name,
                "description": descrip,
                "start_time": start,
                "end_time": end,
                "location": city + ", " + state,
                "venue": {
                    "street": line1,
                    "city": city,
                    "state": state,
                    "country": "United States",
                    "latitude": lat,
                    "longitude": lon
                },
                "privacy": "OPEN",
                "picture": 
            "http://stage.localruckus.com/Content/Uploads/Thumbnails/Eddie%20Delahunt_card_
                          84dc116b-f7e5-477b-b0bb-60ecdbe41955.jpg"

            };

            var select = document.getElementById("facebook-page-select");
            var pageId = select.options[select.selectedIndex].value;
            var res;
            FB.api(pageId, 'post', myJsonEvent, function (result) {
                console.log(result);
                if (result.id == undefined) {
                    eventMsg.innerHTML = 'There was a problem creating the event, please 
                          try  again. Error: '+result.message;
                }
                res = result.id;
                eventMsg.innerHTML = 'Event posted id: ' + result.id;
                eventId = result.id;
                postPicture(path);

            });


    }

    function postPicture(path) {
        var cookie = eventId;
        var token = getCookie('access');
        if (cookie != null && cookie != undefined && token != null && token != undefined) {
           $.ajax({
                type: "POST",
                url: "https://graph.facebook.com/" + cookie,
                data: {
                    message: "Event picture",
                    url:
            "http://stage.localruckus.com/Content/Uploads/Thumbnails/Eddie%20Delahunt_card_
                         84dc116b-f7e5-477b-b0bb-60ecdbe41955.jpg",
                    access_token: token,
                    format: "json"
                },
                success: function (data) {
                    alert("Picture posted successfully");
                } 
        });

     }
    }

postPictureメソッドも、イベント作成api呼び出しで画像へのパスを提供することも機能していないようですが、エラーなどは発生しません。

私はグーグル、SO、そしてフェイスブックのドキュメントに多くの時間を費やしましたが、まだ答えを見つけていません。Facebookのドキュメントでこの小さなスニペットを見つけました:


写真

読む

/ EVENT_ID /pictureにHTTPGETリクエストを発行すると、イベントのプロフィール画像のURLへのHTTP302リダイレクトが返されます。

作成/更新

イベントの管理者に対するcreate_event権限と次のパラメーターを使用して/EVENT_ID/pictureにHTTPPOSTリクエストを発行することにより、プロファイル画像をイベントに追加できます。

パラメータ説明タイプ必須

ソース画像コンテンツmultipart/form-data yes

リクエストが成功した場合はtrueを返します。

消去

イベントの管理者に対してcreate_event権限を持つ?EVENT_ID /pictureにHTTPDELETE要求を発行することにより、イベントのプロファイル画像を削除できます。

リクエストが成功した場合はtrueを返します。


しかし、不思議な「ソース」パラメーターや、データがフォームからのものではない場合にマルチパートフォームデータを作成/投稿する方法をまだ見つけていません。

誰かが私を助けることができますか?私はあなたが私に与えることができるどんな助けでも本当に感謝します。

4

1 に答える 1

2

バグ: 現在、この問題に関連する 2 つのバグがあります。

https://developers.facebook.com/bugs/459815400713534

https://developers.facebook.com/bugs/339792622758072


画像へのリンクを URL エンコードしてみましたか? フォームから投稿すると、フォームはURLをエンコードすると思います。投稿するフォームを使用していないため、自分自身をエンコードする必要があります。

picurl = encodeURIComponent('http://stage.localruckus.com/Content/Uploads/Thumbnails/Eddie%20Delahunt_card_
                         84dc116b-f7e5-477b-b0bb-60ecdbe41955.jpg');

ここでテスト済みhttp://jsfiddle.net/ShawnsSpace/e7E4c/

于 2012-06-20T15:37:55.827 に答える