将事件配置文件图片发布到页面 JavaScript SDK 时出现问题

Problems posting Event profile pictures to page javascript sdk

本文关键字:SDK JavaScript 问题 配置文件 事件      更新时间:2023-09-26

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

我花了很多时间在谷歌,SO和Facebook文档上,但还没有找到答案。我在Facebook文档中发现了这个小片段:


图片

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

创建/更新

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

参数描述类型 必需

来源 图片内容 多部分/表单数据 是

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

删除

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

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


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

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

错误:目前有 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/