【问题标题】:FQL Query for friend_count has stopped working and gives errorfriend_count 的 FQL 查询已停止工作并给出错误
【发布时间】:2012-01-27 11:07:02
【问题描述】:

fql?q=SELECT friend_count FROM user WHERE uid='id'

我使用上面的 fql 查询来获取朋友的数量。它已经为我工作了很长一段时间。 [Javascript SDK]

但现在它给出了以下错误消息,

{"error":{"message":"(#604) 您的语句不可索引。WHERE 子句必须包含可索引列。这些列标有 * 在从http://developers.facebook.com/docs/reference/fql 链接的表中“, "type":"OAuthException"}}

我尝试复制此查询并将其粘贴到图形 api 资源管理器工具中,效果非常好。

我已经检查了 user 的 FQL 参考,并且 uid 仍然是可索引的列。

我已经检查了博客中的重大更改,但没有提到有关 fql 的内容。 知道为什么这不再起作用了吗?还有其他方法可以让它工作吗?

【问题讨论】:

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


【解决方案1】:

您可能有一个错误的访问令牌,或者您的查询可能在数字用户 ID 值周围有引号。

https://graph.facebook.com/fql?q=SELECT friend_count FROM user WHERE uid=me()

{ “数据”: [ { “friend_count”:NNNN } ] }

https://graph.facebook.com/fql?q=SELECT friend_count FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me())

{ “数据”: [ { “朋友数”:421 }, { “朋友数”:219 }, { “朋友数”:59 }, { “朋友数”:239 }, { “朋友数”:235 }, { “朋友数”:986 },

编辑

根据您在下面共享的代码链接,这是一种正确编码 fql url 的方法。

var q = 'fql?q=' + escape('SELECT friend_count FROM user WHERE uid=100001516911824');
FB.api(q, Log.info.bind('fql callback'));

【讨论】:

  • 感谢您的回答。实际上,由于我使用的是 javascript sdk,因此我没有明确管理访问令牌。 sdk 不会自动管理访问令牌吗?无论如何,我会更多地研究身份验证令牌。
  • 我已经使用 getLoginStatus() 检查了身份验证令牌,并且响应提供了一个有效的身份验证令牌以及连接状态。我也没有使用引号 :-) 实际上这段代码在几周前才起作用。令人惊讶的是,使用 Graph API Explorer 仍然有效,想知道 Javascript SDK 有什么问题。只是为了确保我也尝试为 Web 服务器启用 https,但仍然没有。最坏的情况是我必须重写代码才能得到来自graph.facebook.com/fql..的响应。
  • 你用的是什么浏览器? (Chrome、IE、Safari 内置了开发者工具,Firefox 有 FireBug 插件)您可以监控网络流量以查看 FB JS SDK 发送的确切调用以及来自 API 的准确响应。也许你的答案就在那里。 :)
  • 哇!这是个好主意 :-) 而且我想我现在看到了问题,当我看到正在发送的请求时,它正在截断 =XXX。 graph.facebook.com/…friend_count FROM user WHERE uid&sdk=joey
  • 哇,我高兴得跳了起来!! :-) 我用 fql?q=SELECT friend_count FROM user WHERE uid%3DXXXX 替换了我的查询,它可以工作:-) 我尝试对整个字符串进行编码,但它给出了一些其他异常。所以你认为FB的人需要调查这个吗?实际上我已经向他们提出了一个错误,现在如果是他们的问题,我将对其进行更新,否则我将不得不关闭它。
【解决方案2】:
 var query = string.Format("SELECT friend_count FROM user WHERE uid=me()");
            dynamic parameters = new ExpandoObject();
            parameters.q = query;

            object data2 = fbClient.Get("/fql", parameters);

【讨论】:

    猜你喜欢
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    相关资源
    最近更新 更多