Facebook API:评论/喜欢数据的数据转储

时间:2011-03-25 19:45:16

标签: facebook facebook-c#-sdk facebook-fql

这是我的代码:

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查询流表时,无法使用会话。”

如何授权此会话查看我自己的数据?

1 个答案:

答案 0 :(得分: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列查询流表。

所以你应该把你的第一个查询改为这个(以帖子ID'19292868552_118464504835613'为例):

select post_id from stream where post_id = '19292868552_118464504835613'

或者,你可以使用帖子ID:

对图表做同样的事情
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");

以下是关于Post Graph API的Facebook文档: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;
}

这将为您提供用户的最新帖子。从那里你可以遍历它们以找到你想要获得更多细节的那个。