使用批量请求将自定义故事发布到Facebook

时间:2015-01-20 10:36:27

标签: facebook facebook-graph-api facebook-javascript-sdk

我有一个网络应用程序,允许用户使用他们执行的健身练习列表将自定义故事发布到他们的Facebook时间线。

第一个版本循环练习并为每个练习调用FP.api,它运行正常。

现在我想通过批量请求拨打FB.api,以加快发布,以及我遇到麻烦的地方。

这是循环工作正常的代码(exids是一个数组数组):

function postToFB(exids)
{
    fbi = 0;
    fblength = exids.length;
    for (var i = 0; i < fblength; i++)
    {
        FB.api(
            'me/' + vitNamespace + ':perform',
            'post',
            {
                exercise: "http://www.vitalclub.net/scripts/getExforFB.php?exid=" + exids[i],
                'fb:explicitly_shared': true
            },
            function(response) {
                ...
            });
    }
}

以下是包含批量请求的代码,它返回错误:

function postToFB(exids)
{
    var batcharr = [];
    for (var i = 0; i < exids.length; i++)
        batcharr.push({ method: 'post', relative_url: 'me/' + vitNamespace + ':perform', body: "exercice=http://www.vitalclub.net/scripts/getExforFB.php%3Fexid%3D" + exids[i] + "&fb:explicitly_shared=true" });
    FB.api(
        '/',
        'post',
        { batch: batcharr, include_headers: false },
        function(response) {
            ...
        });
}

我得到的错误(针对每个练习)如下:您尝试发布的操作无效,因为它未指定任何参考对象。必须至少指定以下属性之一:exercise。

我认为这与批处理请求中的主体格式化方式有关,但我找不到正确的格式化方法。我已尝试在表示练习的URL上使用encodeURIComponent,但错误是相同的。

任何人都知道问题是什么?

谢谢,

1 个答案:

答案 0 :(得分:0)

好的,我的坏。这真是一个愚蠢的错误。我写了参数&#34; exercise&#34;用法语代替英语(所以&#34; exercice&#34;而不是&#34;运动&#34;)以及问题出在哪里。

我现在也使用$ .param来格式化参数,所以我现在有:

var batcharr = [];
var opts;
for (var i = 0; i < exids.length; i++)
{
    opts = { exercise: "http://www.vitalclub.net/scripts/getExforFB.php?exid=" + exids[i], 'fb:explicitly_shared': true };
    batcharr.push({ method: 'post', relative_url: 'me/' + vitNamespace + ':perform', body: $.param(opts) });
}

在致电FB.api之前,它就像一个魅力!