1

我将此查询用于 FQL:

SELECT pid, object_id, caption, like_info, comment_info, src, src_small, src_big, images FROM photo WHERE album_object_id="10151088306597851" ORDER BY like_info DESC 

在控制台中工作正常,检查: https ://developers.facebook.com/tools/explorer?method=GET&path=fql%3Fq%3DSELECT%20pid%2C%20object_id%2C%20caption%2C%20like_info%2C%20comment_info %2C%20src%2C%20src_small%2C%20src_big%2C%20images%20FROM%20photo%20WHERE%20album_object_id%3D%2210151088306597851%22%20ORDER%20BY%20like_info%20DESC

但是,当我将 Javascript SDK 与 FB.api() 方法一起使用时,它会失败并显示错误 604“您的语句不可索引。WHERE 子句必须包含可索引列。此类列在从http://链接的表中标有 * developer.facebook.com/docs/reference/fql “但根据表格“照片”“album_object_id”的文档是可索引的..

这是我的 Javascript 代码:

    if (album_object_id) {
        var query = 'SELECT pid, object_id, caption, like_info, comment_info, src, src_small, src_big, images FROM photo WHERE album_object_id="' + album_object_id + '" ORDER BY like_info DESC';
        //console.log(query);return;
        FB.api('/fql?q=' + encodeURI(query), callback);
    }

当我记录查询并将其复制/粘贴到图形 API 控制台时,它工作正常..

有什么线索吗??

欢呼 Sjoerd

4

1 回答 1

3

我认为 encodeURI 在这种语法上引入了一个查询编码问题。以下代码完美运行并返回 82 项:

var query = 'SELECT pid, object_id, caption, like_info, comment_info, src, src_small, src_big, images FROM photo WHERE album_object_id="10151088306597851" ORDER BY like_info DESC';

FB.api('/fql', {q: query}, function(r) {
        console.log(r)
    });
}
于 2012-10-23T20:39:25.427 回答