Мгновенные статьи Facebook Ошибка POST HTML - PullRequest
0 голосов
/ 18 января 2019

Я ударил блокировщика с помощью POST'ing HTML-контента в API https://graph.facebook.com. Я могу успешно 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-код и просмотреть его с помощью приложения «Страницы» на мобильном устройстве. Это только сбой, когда я пытаюсь протолкнуть контент через API.

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

1 Ответ

0 голосов
/ 22 января 2019

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

...