Как подписаться на обновления в режиме реального времени для стены страницы 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, если он установлен правильно!