2013-05-28 83 views
0

当我做了FQL查询类似如下(其中<userId>是我的FB朋友的Facebook的ID):为什么这个FQL调用失败?

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

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

这是因为您试图获取数据,在这种情况下,它们是由他们的朋友和他们关注的页面创建的帖子组成的新闻提要,属于用户,这实质上属于他们。您需要授权才能访问他们的数据或代表他们发布照片等。但是,如果您试图获得他们自己生成的帖子的自己的流,那么您可以完全获得这些帖子,假设它们是公开的并可通过其设置的权限访问。您可以使用图形API调用:

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

我也会在抛出这样的:你可以阅读自己的新闻提要,以及与图形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 
    } 
} 

这进一步证实,你不能访问其他用户的新闻提要除非你有他们的许可,即。被授予属于他们的访问令牌。

+0

用户不应该有权访问其他用户的访问令牌。我不是想代表我的朋友采取行动,我只是试图获得他的新闻提要。 – howettl

+0

用户不应该,但你正在开发的应用程序可以。如果你只是想获得他的新闻(他可以在主页上查看他的朋友的帖子),那么这仍然是一个隐私问题。即使他让所有人都公开,即使是他不是朋友的人,他仍然可以通过API和FQL访问自己的新闻。您无法使用您自己的访问令牌访问它。通过任何常规手段没有真正的方法来看朋友自己的新闻。你只能看到你自己的新闻提要。但是如果你试图让自己的行为公开化,你可以。 – JayNCoke

+0

我已经更新了我的答案,以表明您可以获取其他用户自己生成的项目的订阅源。你仍然无法看到他们的朋友和他们关注的页面生成的物品的个人新闻源。 – JayNCoke