Пример приложения Facebook Messenger API Messenge не работает - PullRequest
1 голос
/ 18 марта 2020

У меня проблема с воспроизведением второго примера https://developers.facebook.com/docs/messenger-platform/reference/attachment-upload-api#example_request

Это:

curl  \
  -F 'message={"attachment":{"type":"image", "payload":{"is_reusable":true}}}' \
  -F 'filedata=@/tmp/shirt.png;type=image/png' \
  "https://graph.facebook.com/v6.0/me/message_attachments?access_token=<PAGE_ACCESS_TOKEN>"

Когда я проверяю запрос с помощью httpbin, я получаю:

{
"args": {}, 
  "data": "", 
  "files": {
    "filedata": ""
  }, 
  "form": {
    "message": "{\"attachment\":{\"type\":\"image\", \"payload\":{\"is_reusable\"=true}}}", 
    "recipient": "{\"id\":\"2673203139464950\"}"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Content-Length": "474", 
    "Content-Type": "multipart/form-data; boundary=------------------------855a2be7cb07aa99", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.58.0", 
    "X-Amzn-Trace-Id": "Root=1-5e71f6ce-edeb373f3e446e443e23f2e3"
  }, 
  "json": null, 
  "origin": "my.ip.ad.dr", 
  "url": "https://httpbin.org/post"
}

Когда я запускаю его локально, я получаю

{
   "error":{
      "message":"(#100) Field message must be a valid json object with string keys",
      "type":"OAuthException",
      "code":100,
      "fbtrace_id":"ABYTTCTcFg7DoXr8i8ySdJB"
   }
}

Мои попытки решить его самостоятельно безуспешны, несмотря на несколько дней усилий. Думаю, проблема действительно проста, но мне нужна помощь.

Кстати, в общем, мне нужен python -запрошенный способ загрузки файлов в Facebook, поэтому, если бы он у меня был, я бы не стал нужно решение скручивания.

Буду признателен за любую помощь.

Мне сказали заменить знак равенства двоеточием и добавить обратную косую черту, однако, похоже, он не работает:

$ curl  \
>   -F 'message:{\"attachment\":{\"type\":\"image\", \"payload\":{\"is_reusable\": true}}}' \
>   -F 'filedata=@/tmp/shirt.png;type=image/png' \
>   "https://graph.facebook.com/v6.0/me/message_attachments?access_token=<MY-TOKEN>"
Warning: Illegally formatted input field!
curl: option -F: is badly used here

1 Ответ

0 голосов
/ 21 марта 2020

Вы хотите заменить только второй знак равенства двоеточием, после знака is_reusable, в противном случае предоставленный вами JSON недействителен. Знак равенства после message должен остаться, потому что это требуется curl. Ознакомьтесь с документацией для получения более подробной информации.

В вашем случае вы хотите использовать следующее:

-F 'message={"attachment":{"type":"image","payload":{"is_reusable":true}}}'
...