使用JS SDK和FQL获取Facebook上所有朋友的列表

时间:2011-08-11 15:23:43

标签: javascript facebook facebook-fql

我正在尝试使用我的Facebook应用程序获取当前用户的所有朋友的列表:
这是我的代码供您参考:

    var meID = <?php echo $data['user_id']; ?>;
    var queryOnFriends = "SELECT uid, name, online_presence, status FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = " + meID + ")";
    var queryOnFriends1 = "SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=" + meID + ")";
    var queryOnFriends2 = "SELECT uid2 FROM friend WHERE uid1 = me()";
    var queryUserName = "SELECT name, uid FROM user WHERE uid={0}";
    var query = FB.Data.query(queryOnFriends2, meID);
    query.wait(function(rows){
        alert("in callback");
        document.getElementById('display').innerHTML =
        'Your name is ' + rows[0].name;
    });

参考我使用var queryUserName的尝试工作正常,但所有其他工作都不起作用,即使是FQL示例中的简单queryOnFriends2
应用程序正确地请求权限(read_friendlists, user_online_presence, friends_online_presence)并且FB JS SDK似乎初始化很好,因为查询用户自己的用户名(queryUserName)有效,但是,它甚至不执行回调函数失败的案件!

我做错了什么?

2 个答案:

答案 0 :(得分:1)

queryUserName与您的其他查询之间的区别在于queryUserName包含一个参数{0}

您的其他查询正在使用me(),因此他们不需要传入数据参数。

您需要更改此行:

var query = FB.Data.query(queryOnFriends2, meID);

到此:

var query = FB.Data.query(queryOnFriends2);

答案 1 :(得分:0)

好的,我现在明白了...我用php来授权我的应用......但是也没有验证!当只使用facebook jsSDK和initalize,然后使用getStatus时,它会自动完成所有操作!

然后查询工作了!