2015-02-05 3 views
2

это мой первый вопрос для stackoverflow, так что если что-то не так, пожалуйста, сообщите .. Ну, это проблема в Facebook в реальном времени: Я успешно создал подписку на страницу и ее пользователь admin (тестовая страница и тестовое приложение создано), пользователь согласился с разрешениями на manage_page, read_stream, read_friendlist, read_insights, publish_actions и множество пользовательских данных (о, электронной почте и т. д.) Когда я запрашиваю GET для Graph api с помощью edge/subscriptions, я получаю результат:Facebook в режиме реального времени обновление страницы php

{ 
    "data": [ 
    { 
     "object": "user", 
     "callback_url": "LIVE_CALLBACK_URL", 
     "fields": [ 
     "feed" 
     ], 
     "active": true 
    }, 
    { 
     "object": "page", 
     "callback_url": "LIVE_CALLBACK_URL", 
     "fields": [ 
     "built", 
     "description", 
     "email", 
     "feed", 
     "location", 
     "name", 
     "personal_info", 
     "written_by" 
     ], 
     "active": true 
    } 
    ] 
} 

Так, что заботятся, после того, что я искал, почему Facebook не посылает мне никаких обновлений (которые я вхожу к сому efile.txt) Итак, я узнал, что вам нужно запросить Graph api с вкладками/tabs, чтобы создать вкладку страницы для моего api. Когда я спрашиваю, что он вернул «успех», так что он создан (не может узнать, где он хранится, но он работает ...). После этого я создал некоторые данные в своем профиле, чтобы проверить, а также на странице, чтобы узнать, отправляет ли Facebook какие-либо обновления, и неожиданно отправляется одно обновление, которое было прокомментировано моим сообщением о профиле пользователя (общее на временной шкале). Ответа был:

14:17 05.02.2015 
Array 
(
    [object] => user 
    [entry] => Array 
     (
      [0] => Array 
       (
        [uid] => ****my_fb_id**** 
        [id] => ****my_fb_id - not_someone_else**** 
        [time] => 1423146339 
        [changed_fields] => Array 
         (
          [0] => feed 
         ) 

       ) 

     ) 

) 

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

$method = $_SERVER['REQUEST_METHOD']; 
    if(isset($_GET['hub_mode']) && isset($_GET['hub_verify_token'])){ 
      if (trim($method) == 'GET' && trim($_GET['hub_mode']) == 'subscribe' && trim($_GET['hub_verify_token']) == VERIFY_TOKEN) { 
      print $_GET['hub_challenge']; 
      } 
     } 
     else if ($method == 'POST') {  
     $updates = json_decode(file_get_contents("php://input"), true); 
      $file = 'log.txt'; 
      $current = file_get_contents($file); 
      @$results = print_r($updates,true); 
      $current .= $results; 
      file_put_contents($file, $current);        
    } 

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

+0

Вам не нужно приложение для ввода страницы. – WizKid

+0

Без этого он не отправил обновление на веб-страницу (увидел его здесь [ссылка] (http://stackoverflow.com/questions/21189046/subscribe-to-facebook-page-feed-real-time-updates)) поэтому я добавил вкладку страницы, и она сработала, но только один раз ... –

+0

Этот способ подписки на обновления в режиме реального времени для страниц устарел. Ознакомьтесь с текущим методом здесь: https://developers.facebook.com/docs/graph-api/real-time-updates/v2.2 – CBroe

ответ

0

Наряду с использованием устаревшего метода, как описано @CBroe, я думаю, что у вас есть недоразумение: Facebook не будет посылать вам данные, которые изменились, но объект (и это поля/края) изменение произошло для изменения объектов пользователя.

Для страниц вы можете сами получить изменения (против changes полей в запросе FB).

См

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

Это означает, что вам нужно составить отдельный запрос от информационного объекта, который вы получаете от Facebook. В вашем примере это будет запрос к вашему фиду вашего пользователя

запросить последние изменения.

+0

Какой новый подход к созданию подписки? через некоторые рамки? Спасибо за разъяснение, никогда не думал, что такого рода обновления ожидаются от Facebook, в этом случае он работал только один раз :) Почему нет обновлений для страницы? –

+0

взгляните на https://developers.facebook.com/docs/graph-api/reference/v2.2/app/subscriptions#publish – Tobi

+0

Так что мне нужно создавать новые подписки каждый раз, когда я их получаю? Часть о получении - это просто проверить ее, если она работает ... например. я получаю обновление от fb, запрашиваю график с полученным мной краем, а затем обрабатываю этот запрос, а затем воссоздаю подписку? –