0

好的,我正在使用 javascript API 处理 Facebook Graph API。我一直在努力在用户页面上创建事件,而不是在他们的个人资料上,我工作得很好。但是,当我尝试使用活动上传个人资料图片时,活动成功创建,但没有图片。

我尝试了许多解决方案,但还没有找到一个有效的解决方案。

这是我目前拥有的:

 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 调用提供图像路径似乎都不起作用,尽管我没有收到任何错误或类似的东西。

我在 google、SO 和 facebook 文档上花了很多时间,但还没有找到答案。我在 facebook 文档中找到了这个小片段:


图片

向 /EVENT_ID/picture 发出 HTTP GET 请求会返回 HTTP 302 重定向到事件的个人资料图片的 URL。

创建/更新

您可以通过向 /EVENT_ID/picture 发出 HTTP POST 请求来向事件添加个人资料图片,该请求具有事件管理员的 create_event 权限和以下参数:

参数 描述 类型 必填

source 图片内容 multipart/form-data 是

如果请求成功,则返回 true。

删除

您可以通过向具有活动管理员的 create_event 权限的 ?EVENT_ID/picture 发出 HTTP DELETE 请求来删除活动的个人资料图片。

如果请求成功,则返回 true。


但是我还没有找到神秘的“源”参数,或者当数据不是来自表单时如何创建/发布多部分表单数据。

有人可以帮帮我吗?我真的很感激你能给我的任何帮助。

4

1 回答 1

2

BUG:目前有 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 回答