API Graph Facebook: как публиковать текст на странице, включая вложения изображений? - PullRequest
0 голосов
/ 25 апреля 2018

В документации приведен пример загрузки изображения не через URL, а в виде вложения:

https://developers.facebook.com/docs/messenger-platform/reference/attachment-upload-api

curl -F "message={'attachment':{'type':'image', 'payload':{'is_reusable':true}}}" -F "filedata=@square.png;type=image/png" "https://graph.facebook.com/v2.12/1843037429354999/photos?access_token=<ACCESS_TOKEN>"

Это приводит к следующему запросу:

POST https://graph.facebook.com/v2.12/<MY_PAGE_ID>/photos?access_token=<MY_ACCESS_TOKEN> HTTP/1.1
Host: graph.facebook.com
User-Agent: curl/7.52.1
Accept: */*
Content-Length: 2833
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------c71046aadf1a4e33

--------------------------c71046aadf1a4e33
Content-Disposition: form-data; name="message"

{'attachment':{'type':'image', 'payload':{'is_reusable':true}}}
--------------------------c71046aadf1a4e33
Content-Disposition: form-data; name="filedata"; filename="square.png"
Content-Type: image/png

<IMAGE_DATA>
--------------------------c71046aadf1a4e33--

Однако этот пример не работает так, как рекламируется.Объект json в параметре сообщения буквально публикуется как текст в сообщении.

Я хотел бы иметь возможность отправлять данные поста json, которые включают в себя «message» и «access_token», так что яне нужно включать токен доступа в URL.

Как я могу гарантировать, что объект json типа / изображения / полезной нагрузки применяется как конфигурация, а не как буквальное почтовое сообщение?

А как я могу отправить «message» и «access_token» в postdata?

1 Ответ

0 голосов
/ 25 апреля 2018

Нашел решение.

Эта команда ...

curl -F "access_token=<MY_ACCESS_TOKEN>" -F "message=This is the message I wanna post." -F "filedata=@square.png;type=image/png" "https://graph.facebook.com/v2.12/<MY_PAGE_ID>/photos"

Дает этот рабочий запрос:

POST https://graph.facebook.com/v2.12/<MY_PAGE_ID>/photos HTTP/1.1
Host: graph.facebook.com
User-Agent: curl/7.52.1
Accept: */*
Content-Length: 3077
Expect: 100-continue
Content-Type: multipart/form-data; boundary=------------------------e94f377a15b0500f

--------------------------e94f377a15b0500f
Content-Disposition: form-data; name="access_token"

<MY_ACCESS_TOKEN>
--------------------------e94f377a15b0500f
Content-Disposition: form-data; name="message"

This is the message I wanna post.
--------------------------e94f377a15b0500f
Content-Disposition: form-data; name="filedata"; filename="square.png"
Content-Type: image/png

<IMAGE_DATA>
--------------------------e94f377a15b0500f--

Внезапно меня осенило.Если параметр message отправляет сообщение, то почему бы просто не поместить туда сообщение, которое я хочу опубликовать.Также можно включить access_token.И это сработало.

Вместо устаревшего «сообщения» вы также можете использовать «заголовок», и оно также будет работать.

В любом случае, теперь я могу попытаться воспроизвести этот http-запрос из C #,Рад, что нашел это, потому что это избавляет меня от необходимости устанавливать Facebook PHP SDK только для того, чтобы увидеть, как должен формироваться такой запрос.

(В любом случае, почему так мало поддержки Facebook Graph API C #?)

Я до сих пор не представляю, как правильно отправить объект json вложения / типа / изображения / полезной нагрузки из документации Facebook.

О, хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...