Как подписаться на обновления в режиме реального времени для стены страницы Facebook

Facebook в режиме реального времени docs теперь говорят, что вы можете получить фид для страницы:

Вы можете подписаться на ленту страницы так же, как вы подписались на фид пользователя - тема подписки должна быть "пользователем", а поле подписки должно быть "feed"

Мое понимание этого заключается в том, что мне нужно отправить в API-интерфейс графика, чтобы подписаться как таковой:

curl -d \
"object=user&fields=feed&callback_url=$CALLBACKURL&verify_token=$SECRET" \
"https://graph.facebook.com/$PAGEID/subscriptions?access_token=$OAUTHTOKEN"

(Это bash script.) Здесь $CALLBACKURL правильно настроен после кода . (По крайней мере, я думаю, что это правильно - я могу успешно добавить подписки с ним.) $OAUTHTOKEN - это приложение для Facebook.
И $PAGEID - это идентификатор объекта facebook страницы, на которую я хотел бы получить обновления в реальном времени.

Когда я это сделаю, вызов будет работать - нет сообщения об ошибке. Мой callback вызывается. Но я, конечно, не получаю уведомления, когда что-то происходит на ленте страницы.

Итак, что пропало? Должна ли страница установить приложение, чей маркер Oauth я использую? Или мне как-то нужно получить токен oauth для самой страницы, войдя в систему как страница?

Ответы

Ответ 1

Я не знаю, может ли это вам помочь, но я расскажу вам, где я нахожусь в ленте обновления страницы в реальном времени:

(разрешения: manage_page, offline_access, read_stream)

  • ваше приложение должно быть привязано к странице (затем установите приложение, но не нужно иметь вкладку ex. создать вкладку https://graph.facebook.com/PAGE_ID/tabs?app_id=APP_ID&method=POST&access_token=PAGE_ACCESS_TOKEN и удалить вкладку . TAB_ID = PAGE_ID '/закладки/приложение _' APP_ID. https://graph.facebook.com/TAB_ID?method=DELETE&access_token=PAGE_ACCESS_TOKEN)

    
    function page_access_token($page_id,$access_token){
    $page_token_url="https://graph.facebook.com/" . $page_id . "?fields=access_token&" . $access_token; $response = file_get_contents($page_token_url); $resp_obj = json_decode($response,true); $page_access_token = $resp_obj['access_token']; return $page_access_token; }

    function page_tabs_create($page_id,$app_id,$page_access_token){

    $page_settings_url = "https://graph.facebook.com/" . $page_id . "/tabs?app_id=".$app_id."&method=POST&access_token=" . $page_access_token; $response = file_get_contents($page_settings_url); $resp_obj = json_decode($response,true); return $resp_obj; }

    function page_tabs_delete($tab_id,$page_access_token){

    $page_settings_url = "https://graph.facebook.com/".$tab_id."?method=DELETE&access_token=" . $page_access_token; $response = file_get_contents($page_settings_url); $resp_obj = json_decode($response,true);

    return $resp_obj; }

  • Подписка: подписка должна быть как "пользователь" и, следовательно, object = user fields = feed, но вам нужно добавить новые поля, потому что в противном случае она получает комментарии и любит стену, поэтому вы должны добавить "статус" в чтобы получить опубликованные статьи (моя проблема заключается в том, чтобы получить другой контент, такой как ссылки, которые мне удалось добавить "ссылка" в качестве полей, но я не получаю уведомления при отправке ссылки)

    $param = array ('access_token' = > $access_token, 'object' = > 'user', 'fields' = > 'feed, status, link' 'callback_url' = > 'http://******** fbcallback.php' 'verify_token' = > '***********', 'include_values' = > 'true');

    POST https://graph.facebook.com/APP_ID/subscriptions

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

Ответ 2

Я изучаю это, и я получаю толки для страниц.

  • при подписке убедитесь, что объект = пользователь и поля = фид, статус присутствует.

  • Убедитесь, что приложение добавлено на вашу страницу, и только вы получите обновление.

  • Ответ, полученный от facebook, выглядит следующим образом: -

{ "запись": [{ "ID": " *******", "UID": " *****", "время": 1332940650, "changed_fields": [ "статус" ]}], "объект": "пользователь" }

где **** - моя страница.

Вышеуказанное нажатие получено при добавлении нового сообщения, так как вы можете видеть, что статус изменен_feild - это статус, но когда мы отправляем на стену, поля change_fields поступают как фид. Ниже ссылка помогла мне получить нажатие на страницу.

http://bugs.developers.facebook.net/show_bug.cgi?id=18048

Ответ 3

Во-первых, подписка на обновление в режиме реального времени для страницы/фида не работает. См.: http://bugs.developers.facebook.net/show_bug.cgi?id=18048

Требуется ли страница для установки приложения, чей маркер oauth я использую?

Да

Или мне как-то нужно получить токен oauth для самой страницы, войдя в систему как страница?

Если я правильно понимаю вас, вам нужно только app access_token https://graph.facebook.com/oauth/access_token?client_id=your_app_id&client_secret=your_secret&grant_type=client_credentials

Ответ 4

Сначала я начал читать документы об обновлениях в режиме реального времени, думая, что он может предоставить фактические данные. Но, как я понял, это не цель.

Обновления в реальном времени - это просто сказать вам, что что-то изменилось, и как только это произойдет, вы можете вызвать api с помощью обычного метода.

Кроме того, кажется, что в этой части есть ошибка the subscription topic should be 'user' and the subscription field should be 'feed'. Тема подписки, на самом деле, должна быть "страницей". (Вы думали то же самое?)

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

Не уверен, что это распространенная ошибка, но я отправляю ее на всякий случай.

-

В настоящее время я работаю над инструментом интеллектуального анализа данных, который будет нуждаться в обновлениях в реальном времени. Но сначала я сосредоточен на самих данных, поэтому пока не могу опубликовать какие-либо примеры. (Я отредактирую этот ответ при реализации этой части)

Что я могу сказать о вашей проблеме:

1) Посмотрите, что ваш $PAGEID неверен. На самом деле это ваш APPID.

2) После подписки ваша подписка появилась в списке при вызове https://graph.facebook.com/<app-id>/subscriptions?access_token=...?

3) С подпиской пользователя работает ли она? Или это просто со страницами?

Ответ 5

Для этого вам нужно настроить URL-адрес конечной точки, который получает как HTTP GET (для проверки подписки), так и POST (для фактических данных изменения) от Facebook.

Затем вы должны сделать POST для URL-адреса API-интерфейса графика https://graph.facebook.com/<app-id>/subscriptions?access_token=<access_token>, чтобы подписаться, и быть готовым к обработке запроса проверки.

Затем, чтобы перечислить подписки, просто выполните запрос GET на том же URL-адресе https://graph.facebook.com/<app-id>/subscriptions?access_token=<access_token>, который возвращает содержимое в кодировке JSON, в котором перечислены ваши подписки, не более одного для каждого типа объекта.

Ответ 6

Прежде чем вы начнете ждать уведомлений, вы должны проверить, действительно ли нажимается URL-адрес FB

Проверьте вывод следующего:

"https://graph.facebook.com/".FACEBOOK_APP_ID "/подписки?" $AppToken "& client_secret ="....FACEBOOK_SECRET;

Это вернет callback_url, если он установлен правильно!