这是我的代码:
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 :(得分: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;
}
这将为您提供用户的最新帖子。从那里你可以遍历它们以找到你想要获得更多细节的那个。