当我执行如下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
条款的重点是什么?
这是我的访问令牌的权限问题吗?
答案 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,即。被授予属于他们的访问令牌。