Мы, в ZoomSphere , обеспечиваем планирование, составление расписания и автоматическую публикацию контента социальных сетей на выбранной социальной платформе (включая Facebook).

Так в чем проблема?

Некоторые из наших клиентов сообщали нам о проблемах с видимостью сообщений FB на их временной шкале. Я мог бы объяснить весь процесс публикации, но короче говоря, мы просто отправляем запрос в Graph API с информацией о создаваемом посте (то есть его содержимым, некоторыми другими метаданными и, в основном, запланированной датой и временем публикации).

99 процентов запланированных сообщений публиковались нормально, но, да… в Facebook все еще существовали некоторые сообщения, которые были доступны либо напрямую (и невидимы на временной шкале) в браузере с открытием URL-адреса https : //facebook.com/ {response-post-id} или были недоступны вообще.

Когда я говорю о том, что «эти сообщения существуют на Facebook», я имею в виду, что мы смогли связаться с ними через FB Graph API с HTTP-запросом GET, чтобы:

https://graph.facebook.com/v3.1/{response-post-id}?fields=is_published,is_hidden,is_expired,scheduled_publish_time,created_time,updated_time

Если вы попробуете, вы получите ответ, который не полностью согласован (см. Ответ ниже).

  • для ключа is_published установлено значение false, даже если сообщение опубликовано
  • для ключа is_hidden установлено значение true , но мы можем получить доступ к сообщению
  • key schedule_publish_time все еще отвечает (и это уже давно в прошлом), даже если сообщение уже опубликовано
{
    "is_published": false,
    "is_hidden": true,
    "is_expired": false,
    "scheduled_publish_time": 1540016800,
    "created_time": "2018–09–27T12:31:05+0000",
    "updated_time": "2018–09–27T12:31:05+0000",
    "id": "{response-post-id}"
 }

Ключ schedule_publish_time присутствует только в том случае, если публикация сообщения запланирована на будущее. Если значение (временная метка UNIX) меньше NOW () или если вы, например, отмените план, schedule_publish_time больше не присутствует = ›это точка несоответствия, показанная выше.

Об этом сообщается, но…

Это известная проблема для инженеров Facebook. Но они решили не исследовать исправление в настоящее время, и все отчеты закрыты:

Решение

Вы можете идентифицировать эти несогласованные сообщения по значениям ключей (is_published, is_hidden, schedule_publish_time), описанных выше, а затем обновить их с помощью запроса HTTP POST для Графический API:

https://graph.facebook.com/v3.1/{response-post-id}

С телом вроде:

{
   "is_published": true,
   "backdated_time": 1540016800,
   "timeline_visibility": "normal",   
}

backdated_time следует указать в качестве метки времени для ранее запланированного выпуска (в противном случае запись на временной шкале будет отображаться как «опубликовано сейчас»)

Надеюсь, это кому-то поможет.