2013-05-28 38 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