Грешка в HTML ПУБЛИКУВАНЕ на незабавни статии във Facebook

Ударих блокер с POST'ing на HTML съдържание към https://graph.facebook.com api. Мога да извърша успешно POST до крайната точка и получавам ID на състоянието като отговор. Когато след това използвам 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="/bg{my_Facebook_approved_domain/canonical_url}">
                <link rel="stylesheet" title="{my_stylesheet}" href="/bg#">
                <!--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="/bg{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