Facebook 即阅文 HTML POST 错误

Facebook Instant Articles HTML POST Error

我遇到了 POST 将 HTML 内容添加到 https://graph.facebook.com api 的障碍。我能够成功 POST 到端点并且我收到一个状态 ID 作为响应。然后,当我在端点上使用 GET 检查状态时,错误消息告诉我我的内容格式错误。我可以在即阅文频道中手动发布完全相同的 HTML 内容,而且我没有收到有关 HTML 格式的警告。我还尝试使用 Facebook 提供的示例文章 HTML 以及 returns 错误消息。任何建议表示赞赏。以下是我的请求示例:

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 页面的 Configuration/Tools/Connect 您的站点区域中。同样,我可以手动上传相同的 HTML 并使用移动设备上的 Pages 应用程序进行预览。只有当我尝试通过 API.

推送内容时才会失败

我正在用 POSTMAN 测试所有调用,然后将此代码转换为 Python3。再次感谢您的帮助。

您总是希望将负载数据放在 POST 请求的正文中,并作为 GET 的查询字符串。任何时候 API 调用看起来对 URL 来说极端的数据(不能超过 2083 个字符),这是一个关键指标,表明这可能不是 GET。