Мгновенные статьи Facebook HTML Ошибка POST

Я столкнулся с блокировщиком, отправив HTML-контент методом POST на https://graph.facebook.com. API Я могу успешно выполнить POST в конечную точку и получить в ответ идентификатор состояния. Когда я затем использую GET на конечной точке, чтобы проверить статус, сообщения об ошибках сообщают мне, что мой контент искажен. Я могу вручную опубликовать точно такой же HTML-контент на моем канале в Моментальных статьях, и я не получаю предупреждений о форматировании HTML. Я также пытался использовать образец HTML-кода статьи, предоставленный Facebook, и он также возвращает сообщения об ошибках. Любые советы приветствуются. Вот примеры моих запросов:

POST /{my_page_id}/instant_articles?access_token={my_access_token}&amp; html_source=<!DOCTYPE html><html lang="en" prefix="op: http://media.facebook.com/op HTTP/1.1
Host: graph.facebook.com
cache-control: no-cache
Postman-Token: {postman_token}
<!---Facebook Sample Article Content--->
<!doctype html>
        <html lang="en" prefix="op: http://media.facebook.com/op#">
        <head>
                <meta charset="utf-8">
                <!--Canonical URL of the article from site -->
                <link rel="canonical" href="{my_Facebook_approved_domain/canonical_url}">
                <link rel="stylesheet" title="{my_stylesheet}" href="#">
                <!--Article Title-->
                <title>{my_article_title}</title>
                <meta property="fb:article_style" content="{my_stylesheet}">
        </head>
        <body>
                <article>
                        <header>
                                <!-- The header image shown inside your article -->
                                <figure>
                                        <!-- First Figure from the article -->
                                        <img src="{my_image_url}">
                                </figure>
                                <!-- Article Title -->
                                <h1>{my_article_title}</h1>
                                <!--Article Teaser-->
                                <h2>{my_article_subtitle}</h2>
                                <!-- The authors of the article -->
                                <address>{list_of_authors}</address>
                                <!--The published and last modified time stamps-->
                                <time class="op-published" dateTime="2019-01-10T16:00">January 10 2019, 04:00 PM</time>
                        </header>
                           <p>{my_content}</p>
                           <p><a href="{my_canonical_url}"> Read the Full Story at {my_site}</a></p><br>
                        <footer>
                           <!-- Copyright details for your article -->
                           <small>© 2019 {my_site}.  All Rights Reserved.</small>
                        </footer>
                </article>
        </body>
</html>

После отправки запроса POST я получаю ответ, который выглядит следующим образом:

{
    "id": "2005563182874064"
}

Затем я ПОЛУЧАЮ конечную точку статуса статьи, вызвав:

GET /{page_id}?access_token={my_access_token}&amp; fields=errors,html_source,instant_article,status HTTP/1.1
Host: graph.facebook.com
cache-control: no-cache
Postman-Token: {postman_token}

... и ответ, который я получаю от этой конечной точки, выглядит следующим образом:

{
    "errors": [
        {
            "level": "ERROR",
            "message": "AttValue: \" expected"
        },
        {
            "level": "ERROR",
            "message": "Couldn't find end of Start Tag html"
        },
        {
            "level": "ERROR",
            "message": "Missing Article's Canonical URL: There is no URL specified for this article. A canonical URL needs to be claimed and placed within the HTML to generate an Instant Article. Refer to URLs under Publishing Articles in the Instant Articles documentation for more information on claiming and inserting a canonical URL."
        }
    ],
    "html_source": "<!DOCTYPE html><html lang=\"en\" prefix=\"op: http://media.facebook.com/op",
    "status": "FAILED",
    "id": "2005563182874064"
}

Канонический URL-адрес, безусловно, присутствует в моем HTML-коде, и я трижды проверил, что он указан в разделе «Конфигурация/Инструменты/Подключение вашего сайта» на моей странице в Facebook. Опять же, я могу вручную загрузить тот же HTML-код и просмотреть его с помощью приложения Pages на мобильном устройстве. Это происходит только тогда, когда я пытаюсь отправить контент через API.

Я тестирую все свои вызовы с помощью POSTMAN, а затем конвертирую этот код в Python3. Еще раз спасибо за вашу помощь.


person Fergus    schedule 18.01.2019    source источник


Ответы (1)


Вы всегда хотите размещать данные полезной нагрузки в теле запроса для POST и в виде строки запроса для GET. Каждый раз, когда API запрашивает данные, которые выглядят экстремально для URL-адреса (не может быть длиннее 2083 символов), это ключевой показатель того, что это, вероятно, не GET.

person samism1    schedule 22.01.2019
comment
ваш ответ решил мою проблему. Я также понял, что у меня были двойные кавычки внутри моего HTML-контента, которые не были должным образом экранированы. Я заменил все двойные кавычки на одинарные, а затем поместил свой контент в docString. После этого я получил правильные ответы об успехе. Большое спасибо за Вашу помощь! - person Fergus; 22.01.2019