首页 文章

如何将body编码为facebook图形API

提问于
浏览
0

我正在为facebook图谱API开发一个messenger bot,我想发送带有id的批量请求 . 然而,在某些时候,Facebook只是没有 grab 它们 .

文档不是很有帮助(我发现的唯一的东西:https://developers.facebook.com/docs/graph-api/making-multiple-requests

关键是,我正在向API发送这样的请求(一个批量请求用于演示目的):

网址: https://graph.facebook.com/v2.6/

Headers : Content-Type: application/json

身体: access_token=XXXXXXX&batch=[{"method":"POST","headers":{"name":"Content-Type","value":"application/json; charset=UTF-8"},"relative_url":"me/messages","body":"%7B%22recipient%22%3A%7B%22id%22%3A%22YYYYY%22%7D%2C%22message%22%3A%7B%22attachment%22%3A%7B%22type%22%3A%22template%22%2C%22payload%22%3A%7B%22template_type%22%3A%22generic%22%2C%22elements%22%3A%5B%7B%22title%22%3A%22test%22%2C%22subtitle%22%3A%22test%20test%22%2C%22item_url%22%3A%22%22%2C%22image_url%22%3A%22https%3A%2F%2Fdata.fideinc.com%2Fcustom%2Fent_19286B%2Fid_1ABEA3C_image.png%22%2C%22buttons%22%3A%5B%7B%22type%22%3A%22element_share%22%7D%2C%7B%22type%22%3A%22postback%22%2C%22title%22%3A%22%5Cud83e%5Cudd11%20%5Cu0410%5Cu043a%5Cu0446%5Cu0438%5Cu0438%20%5Cu0432%20%5Cu0437%5Cu0430%5Cu0432%5Cu0435%5Cu0434%5Cu0435%5Cu043d%5Cu0438%5Cu0438%22%2C%22payload%22%3A%22offers%22%7D%5D%7D%5D%2C%22image_aspect_ratio%22%3A%22horizontal%22%7D%7D%7D%2C%22tag%22%3Anull%7D","access_token":"XXXXXXX"}]

无论我使用什么格式的身体元素,它只是响应: "{\"error\":{\"message\":\"(#100) The parameter recipient is required\",\"type\":\"OAuthException\",\"code\":100,\"fbtrace_id\":\"AHiM+KytmHB\"}}"

对于每个 body 元素 .

我试过的其他 body 编码:

"{\"recipient\":{\"id\":\"YYYYY\"},\"message\":{\"attachment\":{\"type\":\"template\",\"payload\":{\"template_type\":\"generic\",\"elements\":[{\"title\":\"test\",\"subtitle\":\"test test\",\"item_url\":\"\",\"image_url\":\"https://data.fideinc.com/custom/ent_19286B/id_1ABEA3C_image.png\",\"buttons\":[{\"type\":\"element_share\"},{\"type\":\"postback\",\"title\":\"\\ud83e\\udd11 \\u0410\\u043a\\u0446\\u0438\\u0438 \\u0432 \\u0437\\u0430\\u0432\\u0435\\u0434\\u0435\\u043d\\u0438\\u0438\",\"payload\":\"offers\"}]}],\"image_aspect_ratio\":\"horizontal\"}}},\"tag\":null}"

messages=%257B%2522recipient%2522%253A%257B%2522id%2522%253A%2522YYYYY%2522%257D%252C%2522message%2522%253A%257B%2522attachment%2522%253A%257B%2522type%2522%253A%2522template%2522%252C%2522payload%2522%253A%257B%2522template_type%2522%253A%2522generic%2522%252C%2522elements%2522%253A%255B%257B%2522title%2522%253A%2522test%2522%252C%2522subtitle%2522%253A%2522test+test%2522%252C%2522item_url%2522%253A%2522%2522%252C%2522image_url%2522%253A%2522https%253A%2F%2Fdata.fideinc.com%2Fcustom%2Fent_19286B%2Fid_1ABEA3C_image.png%2522%252C%2522buttons%2522%253A%255B%257B%2522type%2522%253A%2522element_share%2522%257D%252C%257B%2522type%2522%253A%2522postback%2522%252C%2522title%2522%253A%2522%5Cud83e%5Cudd11+%5Cu0410%5Cu043a%5Cu0446%5Cu0438%5Cu0438+%5Cu0432+%5Cu0437%5Cu0430%5Cu0432%5Cu0435%5Cu0434%5Cu0435%5Cu043d%5Cu0438%5Cu0438%2522%252C%2522payload%2522%253A%2522offers%2522%257D%255D%257D%255D%252C%2522image_aspect_ratio%2522%253A%2522horizontal%2522%257D%257D%257D%252C%2522tag%2522%253Anull%257D"

等等

附:我不能在我的项目中使用任何外部Facebook SDK,我只需要正确地获得此请求

1 回答

  • 0

    如果有人有同样的问题,答案非常简单:使用 http_build_query 而不是 json_encode ...

相关问题