Facebook API: дамп данных комментариев / лайков - PullRequest
2 голосов
/ 25 марта 2011

Вот мой код:

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 Ответ

2 голосов
/ 28 марта 2011

Итак, первая проблема, которую я вижу, заключается в том, что запрос недействителен.У вас есть:

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

Согласно документации Facebook здесь вы можете только запросить таблицу потоков, используя столбцы post_id, app_id, source_id, filter_key и xid.

Таким образом, вы должны изменить свой первый запрос на это (используя идентификатор сообщения '19292868552_118464504835613' в качестве примера):

select post_id from stream where post_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 Post Graph: http://developers.facebook.com/docs/reference/api/post/

РЕДАКТИРОВАТЬ:

Чтобы определить элементы потока пользователя, которого вы хотитечитать их подачу.Вы также можете сделать это, используя Graph API.

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

Это даст вам самые последние сообщения пользователя.Оттуда вы можете просмотреть их, чтобы найти более подробную информацию.

...