0

当我执行如下 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
}

这对我来说似乎是错误的,因为stream_filter 文档中的示例清楚地使用了这个示例。

如果获得 a 的唯一方法stream_filter是调用,WHERE uid=me()那么该WHERE子句的意义何在?

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

4

1 回答 1

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 来获取其他用户的新闻提要,您将收到来自 Facebook 的错误消息:

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

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

于 2013-05-28T22:54:14.603 回答