Публикация в Facebook без ссылки

Я работаю над API, позволяющим публиковать сообщения в Facebook, используя Graph API через REST, отправляя HTTP-запросы на публикацию https://graph.facebook.com/me/feed (после успешной аутентификации OAuth2).

Я могу указать message и link, и он опубликует ссылку (но с игнорированием сообщения?), и я также могу включить name, caption и description, чтобы обработать эти элементы - так что ссылки в порядке.

Если я использую только message или только picture, я получаю сообщение об ошибке:

(#100) Отсутствует сообщение или вложение

Если я использую message и picture, он публикует сообщение без изображения. (Что является полезным, но не предполагаемым поведением?)

Кажется, единственный способ получить изображение - это ссылка (которая включает его в виде миниатюры).


Я просмотрел документы, но не нашел никакой полезной информации по этому поводу - все примеры показывают ссылки.

Мой главный вопрос: Каков предполагаемый способ публикации сообщения без изображения или ссылки?

Но также было бы полезно узнать, есть ли способ разместить изображение на стене? (без миниатюры, с лайтбоксом)


person Peter Boughton    schedule 28.05.2013    source источник
comment
Это зависит от того, как вы на самом деле это делаете, правильный URL-адрес выглядит так: «graph.facebook.com/me/....' и если вы делаете POST, все должно быть закодировано в URL-форме и Т. Д.   -  person Axel Amthor    schedule 28.05.2013
comment
URL-адрес был https://graph.facebook.com/me/feed?access_token=<snip>&format=json - данные предположительно были указаны как дополнительные параметры URL-адреса. Когда я вручную поместил сообщение в строку запроса, то есть https://graph.facebook.com/me/feed?message=test+message&access_token=<snip>&format=json, теперь оно работает, поэтому может быть ошибка с cfhttpparam CF.   -  person Peter Boughton    schedule 28.05.2013


Ответы (1)


Фактический код более сложен, но здесь он упрощен для демонстрации проблемы.

Это не удалось:

<cfhttp
    result = "local.Response"
    method = "post"
    url    = #Arguments.Url#
    >
    <cfhttpparam type="url" name="Message" value="#Arguments.Message#" />
</cfhttp>

Это сработало:

<cfset Arguments.Url &= '&message=' & encodeForUrl(Arguments.Message) />

<cfhttp
    result = "local.Response"
    method = "post"
    url    = #Arguments.Url#
    >
    <cfhttpparam type="url" name="dummy" value="ignore" />
</cfhttp>

(Фиктивное значение cfhttpparam связано с тем, что CF жалуется, если запрос POST не содержит хотя бы одного параметра.)

person Peter Boughton    schedule 28.05.2013