API-интерфейс Facebook: найдите объект графика из URL-адреса
Учитывая URL-адрес общедоступной публикации в Facebook, как можно найти объект post в API-интерфейсе FB? (во-вторых, почему так много фидов пользователей пуст или почти пуст при доступе через API?)
Мы хотели бы иметь возможность комментировать или like сообщение через v2. Икс
Graph API, учитывая URL-адрес публикации. Для этого требуется объект post
ID, с помощью которого мы можем сделать некоторые обоснованные предположения, но
фактический объект через API оказался ненадежным (работает для некоторых должностей, но
не другие).
v2 API вводит идентификаторы пользователей с приложениями, а сообщения ID обычно выглядят
иметь форму {app-scoped user id} _ {unique post id}. Вот
сведения о некоторых попытках найти сообщения в API с различными комбинациями
эти идентификаторы (глобальный идентификатор пользователя, идентификатор пользователя приложения и почтовый идентификатор).
-
Начиная с простого примера: https://www.facebook.com/evan.prodromou/posts/10153023417510505. Ключевыми характеристиками являются то, что они публичные, это не доля другой должности, и, самое главное, у нее нет фотографий, которые добавляют дополнительные идентификаторы и URL-адреса для отдельных фотографий и фотографий. Профиль Evan также является общедоступным, т.е. https://www.facebook.com/evan.prodromou не отображает общий файл. Этот контент в настоящее время недоступен
-
С помощью этого URL-адреса будет указан идентификатор пустой страницы, /v1.0/10153023417510505 и /v2.2/10153023417510505, оба дают ошибку "Неподтвержденный запрос на получение запроса (код 100)".
-
Общий идентификатор пользователя Evan - 525575504. Прикрепив это как префикс, /v1.0/525575504_10153023417510505 и /v2.2/525575504_10153023417510505 все еще обе дают ту же ошибку запроса неподдерживаемого запроса.
-
То же самое, что и его идентификатор пользователя, не связанный с приложением, /v2.2/10152350676805505_10153023417510505.
ОК, попробуйте другое направление. Мы перейдем через пользовательский канал, пока мы не найдем сообщение, о котором идет речь. Похоже, что это более ожидаемый вариант использования API...
-
Как глобальные /v2.2/525575504/posts, так и приложения /v2.2/10152350676805505/posts ничего не возвращает, но /v1.0/525575504/posts возвращает две последние сообщения, this like и этот пост. Не знаю, почему только эти два, хотя и имеют множество других публичных сообщений. Подобный файл доступен через поле id
в обеих версиях api, то есть /v1.0/525575504_10153045879215505 и /v2. 2/10152350676805505_10153045879215505, но обе версии API возвращают ошибку запроса Unsupported get при извлечении сообщения через его поле id, например /v1.0/525575504_351575675029953 и /v2.2/10152350676805505_351575675029953
-
Попытка создать другой публичный пост с изображением: https://www.facebook.com/andigalpern/posts/678121182314631. /v1.0/100003502653187_678121182314631, /v2.2/100003502653187_678121182314631 и /v2.2/499657186827699_678121182314631 все ошибки.
-
/v1.0/100003502653187/posts включает только одно сообщение, например, /v2. 2/100003502653187/posts пуст.
Для справки, здесь проблема GitHub, где мы отслеживали эту проблему.
Ответы
Ответ 1
В принципе вам понадобится read_stream
для этого (которое ваше приложение не получит). И да, несмотря на то, что публикация является общедоступной, вам все равно нужно read_stream
, чтобы получить доступ для чтения ко всем типам сообщений.
Вы можете легко поиграть с этим в Graph API Explorer. Сначала дайте вашему приложению read_stream
разрешение на получение идентификаторов элементов в вашем канале - это даст вам идентификаторы "идентификатора сообщения идентификатора пользователя с расширением приложения". Затем удалите read_stream
(снова нажав "Получить токен доступа" и используя кнопку "Очистить" ) и попробуйте несколько разрешений user_*
, и вы увидите, что для большинства ваших сообщений, даже для публичных, вы по-прежнему будет получать "Неподдерживаемый запрос на получение", что означает, что вам не разрешено читать этот объект.
Fe, у меня есть публичный пост, в котором общий видеоролик с другой страницы на моей временной шкале, type
есть video
и status_type
is shared_story
, но ни user_status
, ни user_videos
не позволяют мне читать этот пост - только когда я предоставляю read_stream
снова, мое приложение может прочитать этот пост. То же самое с другим публичным сообщением типа status
и status_type mobile_status_update
- читаемым с помощью read_stream
, а не с любыми разрешениями user_*
.
Вкратце: то, чего вы хотите достичь, больше не возможно с API v2 и ограничение, которое read_stream
будет предоставляться приложениям на платформах, где не существует официального клиента FB.
Ответ 2
Одно предложение состоит в том, чтобы сделать api-вызовы для написания сообщений facebook, поскольку они возвращают действительный post_id, который вы могли бы использовать
Во-вторых,
Когда вы попробуете https://developers.facebook.com/tools/explorer/256884317673197/?method=GET&path=525575504%2Fposts&version=v2.0&
Вы можете видеть, что его идентификатор сообщений не начинается с его public id
, как вы написали 525575504 _ *
но они все еще ставят неподдерживаемый запрос на получение
https://developers.facebook.com/tools/explorer/256884317673197/?method=GET&path=10152853212485505_351575675029953&version=v2.0
Третий, так как выше не работает, эти сообщения общедоступны наверняка?