【问题标题】:fql getting friends list errorfql获取好友列表错误
【发布时间】:2012-01-29 21:42:57
【问题描述】:

这是我的查询:

 fql?q=SELECT uid, name, pic_square, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

这是错误:

(#604) Your statement is not indexable. The WHERE clause must contain an indexable column. Such columns are marked with * in the tables linked from http://developers.facebook.com/docs/reference

这里是js代码:

var query = encodeURI("SELECT uid, name, pic_square, sex FROM user WHERE uid = me() OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())");
    FB.api('fql?q=' + query, function(response) {
        console.dir(response);
        if(! jQuery.isEmptyObject(response)&& ! jQuery.isEmptyObject(response.data)) {
            var maleList = $('#male-list');
            var femaleList = $('#female-list');
            for (var friend in response.data) {
                var item = STValentines.buildFriendItem(friend);
                if (friend.sex === 'male')
                    maleList.append(item);
                else
                    femaleList.append(item);
            }
        }
    });

这是常见问题吗?我能做些什么吗? 有走走的吗?谢谢你的帮助

【问题讨论】:

  • 这很奇怪.. 使用 [Graph API Explorer](developers.facebook.com/tools/… - 我能够从这个查询中获取数据。这个查询是正确的并且问题可能是暂时的。
  • 如果问题仍然存在,您应该大胆地向 facebook 提交错误:developers.facebook.com/bugs
  • 它仅使用我的应用程序中的 javascript sdk 发生。使用 Graph API Explorer 不会引发任何错误
  • 这可能是转义字符的问题吗?也许您应该在将 FQL 查询交给 JavaScript SDK 之前尝试使用 escape() 方法。
  • 你能写一个这样的例子吗?

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


【解决方案1】:

这可能是转义字符的问题。
您应该尝试在 FQL 查询中使用 escape() 方法
在将其交给 JavaScript SDK 之前:

var escapedFQLQuery = escape('SELECT uid, name, pic_square, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())');
//escapedFQLQuery now is : "SELECT%20uid%2C%20name%2C%20pic_square%2C%20sex%20FROM%20user%20WHERE%20uid%20IN%20%28SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20%3D%20me%28%29%29"
FB.api(
  {
    method : 'fql.query',
    query  : escapedFQLQuery
  });

【讨论】:

  • 这里是结果:error_code: "601" error_msg: "Parser error: unexpected '%' at position 6."
  • 只是把它扔出去 - 如果你不使用任何转义方法会发生什么?尝试移除您对encodeURI()的呼叫
  • 如果我不使用任何 endoce,escape ... 那么我得到: (#604) 你的语句不可索引。 WHERE 子句必须包含一个可索引的列。这些列在从developers.facebook.com/docs/reference链接的表中用 * 标记
  • 在黑暗中的另一个镜头 - 尝试用反斜杠转义最后一个右括号,使其看起来像这样:(SELECT uid2 FROM friend WHERE uid1 = me()\)
  • 另一种选择是将me() 替换为实际的用户ID
猜你喜欢
  • 2013-04-21
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 2021-10-03
相关资源
最近更新 更多