В Facebook Marketing API Leadgen_context_cards край не принимает cover_photo

Я подписан на 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));
        }

person Raghu Molabanti    schedule 06.04.2017    source источник
comment
Все примеры cURL на этой странице используют синтаксис -F '[email protected]', что означает фактическую загрузку файла. Если нигде явно не задокументировано, что вы можете просто передать URL-адрес изображения, вы можете предположить, что это невозможно для этой конечной точки.   -  person CBroe    schedule 06.04.2017
comment
не понял, это фактическая загрузка файла, что означает, что это возможно только через пользовательский интерфейс, предоставленный focebook, и невозможно через apis. Я попытался загрузить изображение на страницу, а затем передать туда идентификатор изображения, который также не работает.   -  person Raghu Molabanti    schedule 06.04.2017
comment
Нет, это означает, что вы должны выполнить загрузку файла через API, а не передавать URL-адрес. Это означает, что вы должны отправлять свои данные в основном таким же образом, как это сделала бы HTML-форма с типом ввода = файл.   -  person CBroe    schedule 06.04.2017
comment
Спасибо @CBroe. Я попытался загрузить фактическое изображение с помощью простого java-клиента. все та же проблема. Смотрите мое обновление.   -  person Raghu Molabanti    schedule 07.04.2017


Ответы (1)


Согласно моим наблюдениям в пользовательском интерфейсе https://business.facebook.com. Его первая загрузка изображения и передача идентификатора в cover_photo_id.

Загрузил неопубликованное фото в page/photos и передал сгенерированный идентификатор в cover_photo_id пользователя context_card. и это сработало.

person Raghu Molabanti    schedule 09.04.2017