Facebook Graph API: поиск графического объекта по почтовому URL

Учитывая URL публичного поста в Facebook, как найти объект поста в FB Graph API? (во-вторых, почему так много пользовательских фидов пусто или почти пусто при доступе через API?)

Мы хотели бы иметь возможность комментировать или ставить лайки через API Graph v2.x, учитывая его URL. Для этого требуется идентификатор объекта сообщения, о котором мы можем догадаться, но доступ к реальному объекту через API оказался ненадежным (работает для некоторых сообщений, но не для других).

v2 API представил идентификаторы пользователей в области приложения, а идентификаторы сообщений, как правило, имеют вид {идентификатор пользователя в области приложений}_{уникальный идентификатор сообщения}. Ниже приводятся подробности некоторых попыток найти сообщения в API с различными комбинациями этих идентификаторов (глобальный идентификатор пользователя, идентификатор пользователя в области приложения и идентификатор сообщения).

  • Начнем с простого примера: https://www.facebook.com/evan.prodromou/posts/10153023417510505. Ключевыми характеристиками являются то, что они являются общедоступными, они не являются частью другого поста и, что наиболее важно, не имеют фотографий, которые добавляют дополнительные идентификаторы и URL-адреса для отдельных фотографий и набора фотографий. Профиль Эвана также общедоступен, т. https://www.facebook.com/evan.prodromou не отображает универсальный. Этот контент в настоящее время недоступен

  • Попытка пустого идентификатора записи с этого URL, /v1.0/10153023417510505 и /v2.2/10153023417510505, приводит к ошибке Unsupported get request (code 100).

  • Глобальный идентификатор пользователя Эвана - 525575504. Прикрепляя его в качестве префикса, /v1.0/525575504_10153023417510505 и /v2.2/525575504_10153023417510505 по- прежнему выдают одинаковую ошибку Unsupported get request.

  • Та же ошибка с использованием его идентификатора пользователя, указанного в приложении, /v2.2/10152350676805505_10153023417510505.

Хорошо, давайте попробуем другое направление. Мы будем просматривать страницу пользователя до тех пор, пока не найдем сообщение. Такое ощущение, что это скорее ожидаемый вариант использования API...

Для справки, вот проблема GitHub, где мы отслеживали эту проблему.

2 ответа

Решение

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

Вы можете легко поиграть с этим в Graph API Explorer. Сначала дайте свое приложение read_stream разрешение на получение идентификаторов элементов в вашем фиде - это даст вам идентификаторы "идентификатор пользователя в форме приложения, подчеркивающий идентификатор записи". Затем удалите read_stream (нажав "Получить токен доступа" снова и используя кнопку "Очистить"), и попробуйте несколько user_* разрешения - и вы увидите, что для большинства ваших сообщений, даже общедоступных, вы все равно будете получать только "Неподдерживаемый запрос на получение", что означает, что вы не можете читать этот объект.

Например, у меня есть общедоступное сообщение, где я разместил видео-пост с другой страницы на моей временной type является video а также status_type является shared_story, но ни user_status ни user_videos разрешите мне прочитать этот пост - только когда я даю read_stream Опять же, мое приложение может прочитать этот пост. То же самое с другим публичным постом типа status и status_type mobile_status_update - читается с read_streamне с любым из user_* разрешения.

Вкратце: то, чего вы хотите достичь, больше невозможно с API v2 и ограничением, которое read_stream будет предоставляться только приложениям на платформах, где не существует официального клиента FB.

Одно из предложений состоит в том, чтобы совершать вызовы 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

В-третьих, поскольку выше не работает, эти сообщения являются общедоступными?

Другие вопросы по тегам