2011-03-25 55 views
2

這裏是我的代碼:Facebook的API:評論的數據轉儲/數據等

string code = Request.QueryString["code"]; 
string appId = "x"; 
string appSecret = "x"; 

if (code == "" || code == null) 
{ 
    //request for authentication 
    Response.Redirect("https://graph.facebook.com/oauth/authorize?client_id=" + appId + "&redirect_uri=http://localhost:62543/&scope=email,read_stream"); 
} 
else 
{ 
    var fb = new MyFB(); 
    fb.ApplicationSecret = appSecret; 
    fb.ApplicationID = appId; 
    string accessToken = fb.GetAccessToken(code); 
    fb.AccessToken = accessToken; 


    var fbc = new FacebookClient(accessToken); 

    dynamic streams = fbc.Query("select post_id from stream where permalink = 'http://www.facebook.com/kevin.clough/posts/882439437244'"); 
    Response.Write(streams.Count); 

    dynamic results = fbc.Query("select comments, likes from Post where id = " + streams.post_id); 

    foreach (dynamic comment in results.comments) 
    { 
     Response.Write(comment.from.name + ", " + comment.message + "<br/>"); 
    } 

} 

得到這個錯誤「會話與viewer_id是從會話所有者不同的查詢流表時,不能使用「。

如何授權此會話查看我自己的數據?

+0

錯誤,而FQL? – 2011-03-25 22:35:32

回答

2

所以我看到的第一個問題是查詢無效。您有:

select post_id from stream 
where permalink = 'http://www.facebook.com/kevin.clough/posts/882439437244' 

每Facebook的文檔here你只能查詢中使用的列流表POST_ID,APP_ID,SOURCE_ID,filter_key和XID。另外

select post_id from stream where post_id = '19292868552_118464504835613' 

,你可以使用的帖子ID做同樣的事情用圖形:

所以,你應該第一個查詢更改這個(使用後ID「19292868552_118464504835613」爲例)

dyanmic post1 = fbc.Get("19292868552_118464504835613"); 

您的第二個查詢錯誤,主要是因爲您正在查詢一個不存在的表。

select comments, likes from Post where id = " + streams.post_id 

沒有這樣的FQL表'Post'。我不確定這是什麼目標,但如果你想獲得喜歡和評論,我認爲使用Graph API會更容易。

評論:

dynamic comments = fbc.Get("19292868552_118464504835613/comments"); 

喜歡:

dynamic likes = fbc.Get("19292868552_118464504835613/likes"); 

這裏是Facebook的對早報圖形API文檔:http://developers.facebook.com/docs/reference/api/post/

編輯:

要確定的流項目用戶您需要閱讀他們的Feed。你也可以使用Graph API來做到這一點。

dynamic feed = fbc.Get("me/feed"); 
foreach (dynamic post in feed.data) { 
    var post_id = post.id; 
} 

這會爲您提供最近的用戶信息。從那裏你可以循環查找你想要獲得更多細節的人。

+0

如何確定流項目的post_id是什麼? – KClough 2011-03-29 03:26:58

+0

我已更新答案,以顯示如何閱讀Feed以獲取帖子。 – 2011-03-31 15:11:51

+0

啊我看到你做了什麼,我想這可能是API的限制。這現在是有道理的,謝謝你幫我清理一下。 – KClough 2011-04-04 13:15:36