“'og:type' 属性是必需的,但不存在。”错误
Posted
技术标签:
【中文标题】“\'og:type\' 属性是必需的,但不存在。”错误【英文标题】:"The 'og:type' property is required, but not present." error“'og:type' 属性是必需的,但不存在。”错误 【发布时间】:2014-08-29 21:05:38 【问题描述】:我在使用 Facebook 的图形 API 时遇到问题。我得到一个“'og:type'属性是必需的,但不存在。”此 URL 上的错误:http://thatnewjoint.com/posts/logic-driving-ms-daisy-feat-childish-gambino(以及我博客上的所有其他 URL)。
og:type 元标记在 html 中,所以我不确定 Facebook 为何无法识别它。以下是他们的图形 api 调用返回的内容:
"id": "561280430667026",
"created_time": "2014-08-28T20:35:18+0000",
"is_scraped": false,
"type": "website",
"updated_time": "2014-08-28T20:35:18+0000",
"url": "http://thatnewjoint.com/posts/eminem-superman-throwback-thursdays"
似乎当我使用他们的 api(通过 koala ruby gem)发布时,链接没有被刮掉?我会假设 og:type 错误导致了这种情况,但这里是该页面的元标记:
<meta property="og:url" content="http://thatnewjoint.com/posts/eminem-superman-throwback-thursdays" />
<meta property="og:title" content="Eminem - "Superman" [Throwback Thursdays] | ThatNewJoint | Premier Hip Hop Blog" />
<meta property="og:description" content="Classic from The Eminem Show. I'll be honest - the video is very strange, but the song is great."
<meta property="og:type" content="video">
<meta property="og:image" content="http://i3.ytimg.com/vi/8kYkciD9VjU/hqdefault.jpg" />
<meta property="og:video" content="http://www.youtube.com/v/8kYkciD9VjU?version=3&autohide=1">
<meta property="og:video:type" content="application/x-shockwave-flash">
<meta property="og:video:width" content="1920">
<meta property="og:video:height" content="1080">
编辑更多信息:
好像我将 URL 放入 FB Debugger,我最初得到这个“'og:type' 属性是必需的,但不存在。”错误但是如果我然后单击“获取新的抓取信息”按钮,它将找到所有正确的信息。 FB 是否有可能过早地尝试抓取 URL?似乎在他们的第一次通过时,他们只是没有正确地抓取 URL,但我不知道为什么。
【问题讨论】:
现在好像已经修复了;但是,您还必须为您的视频添加一个安全 URL,否则它将无法在新闻源中播放。 @kitdesai 您是否尝试在下面实现我的答案?我的网站 FB Like 按钮是必需的。那就是为了让个人的myWebsite——“Like”注册为相应的myFacebook站点——“Like”。请告诉我。 @totallytotallyamazing 感谢您的评论。我意识到我错误地初始化了 FB SDK。我修复了它(基于您的 cmets 和新的 FB JS SDK 文档),但链接仍然没有被正确抓取。看到我刚刚发的这个帖子:thatnewjoint.com/posts/t-i-don-t-tell-em-remix @kitdesai 我看到你使用了这个 FB 应用程序 ID“174528659300113”而不是“561280430667026”我认为这是正确的但只是检查?此外,一旦您的代码设置完毕,请确保在 FB Developers Dashboard 中将您的应用程序退出“开发人员模式”并将其置于“公共”模式。 @kitdesai 对于两个视频页面(Eminem 和 T.I.),您拥有相同的 FB App ID“174528659300113”我相信您需要为每个单独的页面使用唯一的 App ID。我在 T.I. 上点击了你的“喜欢”按钮。它似乎正确地注册了计数。请提供反馈! 【参考方案1】:您需要将此 HTML 元标记添加到您的 HEAD 中,并带有 your-app-id(唯一的 Facebook 应用程序 ID)。请务必换掉“your-app-id”:
<meta property="fb:app_id" content="your-app-id">
要创建 FB 应用 ID,请访问此处:https://developers.facebook.com/apps
然后将您唯一的 Facebook 应用 ID 添加到 Facebook JS,并将其放置在尽可能靠近 HTML 正文标签的顶部。请务必换掉“your-app-id”:
<script>
window.fbAsyncInit = function()
FB.init(
appId : 'your-app-id',
xfbml : true,
version : 'v2.0'
);
;
(function(d, s, id)
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
(document, 'script', 'facebook-jssdk'));
</script>
还要放置您的网站 Facebook 按钮并添加此代码。一定要换掉“你的唯一被喜欢的页面”:
<div class="fb-like" data-href="your-unique-page-to-be-liked" data-layout="button_count" data-action="like" data-show-faces="true" data-share="false"></div>
最后在 Facebook Developers Dashboard 中将您的 FB 应用程序退出“开发者模式”,并将其置于“公共”模式。
有关 FB Open Graph 和元标记的更多信息,这里有 2 个有用的链接:1.https://developers.facebook.com/docs/opengraph/using-objects 2.https://developers.facebook.com/docs/sharing/best-practices
这应该可以解决问题。如果您需要更多帮助,请告诉我。
我更新了这个答案,感谢 kitdesai 指出 Facebook 对其 Graph API 版本有新要求,目前最高为 v2.1
【讨论】:
【参考方案2】:我遇到了同样的问题,我的问题是我为 og:url 设置的 URL 末尾有一个“/”,而我在 facebook 上发布的页面的 url 没有。
调试器刚刚告诉我 og:type 尚未设置。我认为问题在于 facebook 的解析器将不匹配视为重定向并感到困惑。
无论如何,让它们匹配解决了我的问题。
【讨论】:
以上是关于“'og:type' 属性是必需的,但不存在。”错误的主要内容,如果未能解决你的问题,请参考以下文章