Я подписан на https://developers.facebook.com/docs/marketing-api/guides/lead-ads/create/v2.8, чтобы создать контекстную карту для рекламы для лидов. документ говорит, что он примет поле cover_photo. Но если мы попытаемся создать контекст из Graph API Explorer со следующими параметрами
https://developers.facebook.com/tools/explorer/xxxxxx?method=POST&path=<PAGE_ID>%2Fleadgen_context_cards&version=v2.8&title=sample-title-1&style=PARAGRAPH_STYLE&content=[%22sample%20content%201%22]&button_text=Get%20Started&cover_photo=http://xxxxx.s3.amazonaws.com/sample/sampleimage.png
это показывает следующее
{
"error": {
"message": "An unknown error has occurred.",
"type": "OAuthException",
"code": 1,
"fbtrace_id": "xxxxxx"
}
}
И если мы нажмем на fgtrace_id, он покажет следующее
{
"error": {
"message": "(#803) Some of the aliases you requested do not exist: xxxxx",
"type": "OAuthException",
"code": 803,
"fbtrace_id": "yyyyyy"
}
}
Если мы удалим параметр cover_photo
, мы сможем создавать контекстные карты.
Спасибо.
Обновление 1
Я попытался загрузить фактический файл изображения. Все еще сталкиваюсь с той же проблемой. Ниже приведен код и ответ.
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httppost = new HttpPost(GRAPH_FACEBOOK_LEADGEN_CONTEXT_CARDS);
File file = new File(IMAGE_PATH);
ContentBody cbFile = new FileBody(file, ContentType.create(MimeTypeUtils.IMAGE_PNG_VALUE));
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("access_token", ACCESS_TOKEN);
builder.addTextBody("title", "sample-title-1");
builder.addTextBody("style", "PARAGRAPH_STYLE");
builder.addTextBody("content", "['sample-title-1']");
builder.addTextBody("button_text", "Get Started");
// builder.addPart("cover_photo", cbFile);
// builder.addBinaryBody("cover_photo", file);
// builder.addBinaryBody("cover_photo", file, ContentType.create(MimeTypeUtils.IMAGE_PNG_VALUE),IMAGE_PATH);
// builder.addBinaryBody("cover_photo", new FileInputStream(file));
httppost.setEntity(builder.build());
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response = httpClient.execute(httppost);
HttpEntity resEntity = response.getEntity();
System.out.println(response.getStatusLine());
if (resEntity != null) {
System.out.println(EntityUtils.toString(resEntity));
}
Ответ:
executing request POST https://graph.facebook.com/167067040143315/leadgen_context_cards HTTP/1.1
HTTP/1.1 500 Internal Server Error
{"error":{"message":"An unknown error has occurred.","type":"OAuthException","code":1,"fbtrace_id":"CHG1SYDq9zn"}}
Обновление 2
С помощью следующего кода я могу создать контекстную карту. но фото обложки не хватает.
URIBuilder uriBuilder = new URIBuilder(
GRAPH_FACEBOOK_LEADGEN_CONTEXT_CARDS);
uriBuilder.setParameter("access_token", ACCESS_TOKEN);
uriBuilder.setParameter("title", "sample-title-1");
uriBuilder.setParameter("style", "PARAGRAPH_STYLE");
uriBuilder.setParameter("content", "['sample-title-1']");
uriBuilder.setParameter("button_text", "Get Started");
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httppost = new HttpPost(uriBuilder.build());
File file = new File(IMAGE_PATH);
ContentBody cbFile = new FileBody(file,
ContentType.create(MimeTypeUtils.IMAGE_PNG_VALUE));
byte[] bytes = FileUtils.readFileToByteArray(file);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addPart("cover_photo", cbFile);
// builder.addBinaryBody("cover_photo", file);
// builder.addBinaryBody("cover_photo", file,
// ContentType.create(MimeTypeUtils.IMAGE_PNG_VALUE),IMAGE_PATH);
// builder.addBinaryBody("cover_photo", new FileInputStream(file));
// builder.addBinaryBody("cover_photo", bytes,
// ContentType.create(MimeTypeUtils.IMAGE_PNG_VALUE),IMAGE_PATH);
httppost.setEntity(builder.build());
httppost.addHeader(new BasicHeader("Content-Type",
ContentType.MULTIPART_FORM_DATA.getMimeType()));
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response = httpClient.execute(httppost);
HttpEntity resEntity = response.getEntity();
System.out.println(response.getStatusLine());
if (resEntity != null) {
System.out.println(EntityUtils.toString(resEntity));
}
-F '[email protected]'
, что означает фактическую загрузку файла. Если нигде явно не задокументировано, что вы можете просто передать URL-адрес изображения, вы можете предположить, что это невозможно для этой конечной точки. - person CBroe   schedule 06.04.2017