комментарии об изменении статуса отношений на Facebook - PullRequest
2 голосов
/ 10 ноября 2011

Я пишу приложение для Facebook, которое просматривает комментарии.
Я могу получить статус пользователя и его комментарии:

$facebook = new Facebook(array(
  'appId'  => APP_ID,
  'secret' => APP_SECRET,
));
$statuses = $facebook->api('/me/statuses/?token='.$session['access_token'],'GET',$params); 

Таким же образом я могу получить сообщения пользователя:

$posts = $facebook->api('/me/posts/?token='.$session['access_token'],'GET',$params);

Мне было интересно, есть ли способ получить комментарии от изменения отношений пользователя

(пользователь перешел из одиночества в отношения)

Ответы [ 2 ]

4 голосов
/ 10 ноября 2011

Эти изменения статуса отношений в настоящее время недоступны через API Facebook, поэтому прикрепленные к ним комментарии также отсутствуют.Наличие этого через API запрашивалось сотни раз, я не знаю, почему у них его нет.

3 голосов
/ 05 мая 2012

К этой информации можно получить доступ.Обновления состояния отношений можно просматривать со следующими разрешениями: user_relationships и read_stream.Однако для извлечения точной истории (и связанных комментариев) вам придется проанализировать результат, и обновление отношения выглядит следующим образом:

 {
  "id": "10000xxxxxxxxxx_2yyyyyyyyyy", 
  "from": {
    "name": "Foo Bar", 
    "id": "10000xxxxxxxxxx"
  }, 
  "story": "Foo Bar went from being \"in a relationship\" to \"single.\"", 
  "story_tags": {
    "0": [
      {
        "id": 10000xxxxxxxxxxx, 
        "name": "Foo Bar", 
        "offset": 0, 
        "length": 9, 
        "type": "user"
      }
    ]
  }, 
  "actions": [
    {
      "name": "Comment", 
      "link": "http://www.facebook.com/10000xxxxxxxxxx/posts/2yyyyyyyyyy"
    }, 
    {
      "name": "Like", 
      "link": "http://www.facebook.com/10000xxxxxxxxxx/posts/2yyyyyyyyyy"
    }
  ], 
  "type": "status", 
  "created_time": "2012-05-05T07:36:32+0000", 
  "updated_time": "2012-05-05T07:36:32+0000", 
  "comments":  {
    "data": [
      {
        "id": "10000xxxxxxxxxx_2yyyyyyyyyyy_7zzzzz", 
        "from": {
          "name": "Foo Bar", 
          "id": "10000xxxxxxxxxx"
        }, 
        "message": "YaY", 
        "created_time": "2012-05-05T07:45:31+0000"
      }
    ], 
    "count": 1
  }
},

Когда в истории участвуют два пользователя (скажем:XXX связан с YYY), тогда в поле 'story_tags' будут также теги, содержащие идентификатор другого пользователя.

Я думаю, что нет обновлений для разведенных, разлученных, овдовевших (не уверен).

Другие обновления отношений могут быть (не исчерпывающими), например:

Alice is in a relationship with Bob and it's complicated.

Alice is in an open relationship with Bob.

Alice is single.

Таким образом, чтобы извлечь обновление, должны быть выполнены два условия: поле 'story' должно существовать и оно должно содержать одноотношения ключевых слов, холост, помолвлен или женат.

Получив идентификатор истории / публикации, можно легко извлечь комментарии.

Вызов API:

https://graph.facebook.com/me_or_id/feed

https://graph.facebook.com/me_or_id/posts

Вызов API: https://graph.facebook.com/me_or_id/statuses не дал желаемого результата, даже с разрешениями user_status и user_relationship_details.

AFAIK, на данный момент это единственный способ.

Редактировать : Путь FQL:

В fql мы можем запросить таблицу потоков .В документации упоминается, что у каждого сообщения есть поле описания, которое не является нулевым, если это автоматически сгенерированное сообщение, то есть не созданное пользователем, например, когда пользователи стали друзьями или изменились отношения.Другие сообщения имеют поле сообщения (и поле описания null).Я полагаю, что это поле описания аналогично полю story для метода graph api.И такие автоматически сгенерированные посты будут иметь type, установленный в 9, что не упомянуто в документации (объяснение для типа есть, но не для типа 9).В любом случае, мы можем сделать ограничительный запрос с этими дополнительными условиями и надеяться получить правильные данные, которые нам, возможно, придется проанализировать, чтобы удалить другие истории, но по крайней мере данные для анализа будут меньше.

Запрос:

SELECT post_id, type, description, comments FROM stream WHERE filter_key in (SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') AND is_hidden = 0 AND type = 9

Вам нужно будет снова проанализировать поле описания для указанных выше ключевых слов.

Примечание: по какой-то причине я не смог получить комментарии по этому одному запросу (комментариимассив всегда был пустым), но когда я вызвал график api с post_id из результата запроса, я смог получить комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...