为什么这个FQL调用失败了?

时间:2013-05-28 22:34:57

标签: facebook facebook-fql

当我执行如下FQL查询时(其中<userId>是我的FB朋友的Facebook ID):

SELECT type, post_id, created_time, updated_time, source_id, message, description, attachment FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid = <userId> AND type = 'newsfeed') AND is_hidden = 0 LIMIT 250

我收到以下错误:

"error": {
  "message": "(#606) uid in the where clause must be the session user", 
  "type": "OAuthException", 
  "code": 606
}

这对我来说似乎不对,因为examples in the stream_filter docs显然使用了这个例子。

如果获得stream_filter的唯一方法是致电WHERE uid=me(),那么WHERE条款的重点是什么?

这是我的访问令牌的权限问题吗?

1 个答案:

答案 0 :(得分:0)

如果您正在根据朋友的uid进行FQL查询,则需要获得授权。获得授权后,您可以将用户授予的访问令牌(在本例中为您的朋友)添加到您的查询中,并有权获取您要查询的结果。

这是因为您正在尝试获取数据,在这种情况下,数据是由他们的朋友和他们关注的页面创建的帖子组成的新闻源,属于用户,这些用户基本上属于他们。您需要获得授权才能访问其数据或代表他们发布照片等。

但是,如果您正在尝试获取自己生成的帖子流,那么您可以完全获取这些帖子,假设它们是公开的并且可以通过其设置的权限访问。您可以使用Graph API调用:

https://graph.facebook.com/<userId>/feed?access_token=<your access token>

我也会把它放进去:你也可以通过Graph API调用来阅读你自己的新闻源:

https://graph.facebook.com/me/home?access_token=<your access token>

您只需确保拥有'read_stream'权限即可。如果您尝试通过将“我”替换为用户ID来获取其他用户的新闻Feed,则会从​​Facebook收到错误消息:

{
  "error": {
    "message": "You can only access the \"home\" connection for the current user.", 
    "type": "GraphMethodException", 
    "code": 100
  }
}

这进一步证实,除非获得他们的许可,否则您无法访问其他用户的新闻Feed,即。被授予属于他们的访问令牌。