Как подписаться на обновления в реальном времени для стены страницы Facebook - PullRequest
15 голосов
/ 10 сентября 2011

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

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

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

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

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

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

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

Ответы [ 6 ]

17 голосов
/ 12 сентября 2011

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

(права доступа: manage_page, offline_access, read_stream)

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

    <code>
    function page_access_token($page_id,$access_token){<br>
    $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;
    }</p>
    
    <p>function page_tabs_create($page_id,$app_id,$page_access_token){</p>
    
    <p>$page_settings_url = "<a href="https://graph.facebook.com/" rel="nofollow">https://graph.facebook.com/</a>" .
    $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;
    }</p>
    
    <p>function page_tabs_delete($tab_id,$page_access_token){</p>
    
    <p>$page_settings_url = "<a href="https://graph.facebook.com/" rel="nofollow">https://graph.facebook.com/</a>".$tab_id."?method=DELETE&access_token=" . $page_access_token;
    $response = file_get_contents($page_settings_url);
    $resp_obj = json_decode($response,true);</p>
    
    <p>return $resp_obj;
    }
    
  2. Подписка: подписка должна быть похожа на «пользователя» и, следовательно, object = user fields = feed, но выЯ должен добавить новые поля, потому что в противном случае он получает комментарии и любит стену, поэтому вы должны добавить «статус», чтобы получать опубликованные статьи (моя проблема заключается в том, чтобы получить другой контент, такой как ссылки, которые мне удалось добавить, «ссылка» в качестве полейно я не получаю уведомления, когда ссылка размещена)

    $ param = array ('access_token' => $ access_token, 'object' => 'user', 'fields' => 'feed, status,ссылка '' callback_url '=>' http: // ******** fbcallback.php ''verify_token '=>' *********** ',' include_values ​​'=>' true ');

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

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

4 голосов
/ 28 марта 2012

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

  1. при подписке убедитесь, что object = user и fields = feed, статус присутствует.

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

  3. Ответ от Фейсбука следующий: -

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

где **** - мой идентификатор страницы.

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

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

3 голосов
/ 14 декабря 2011

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

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

Да

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

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

2 голосов
/ 27 октября 2011

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

Обновления в режиме реального времени просто сообщают вам, что что-то изменилось, и как только это произойдет, вы можете вызвать 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) С подпиской пользователя, работает ли она?Или это только со страницами?

1 голос
/ 13 сентября 2011

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

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

"https://graph.facebook.com/".FACEBOOK_APP_ID."/subscriptions?".$appToken."&client_secret=".FACEBOOK_SECRET;

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

1 голос
/ 12 сентября 2011

Для этого вам нужно настроить 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 содержимое, в котором перечислены ваши подписки, до одного для каждого типа объекта.

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