"' og:type'财产是必需的,但不存在。"错误

时间:2014-08-29 21:05:39

标签: ruby facebook fb-graph

我遇到了Facebook的图表API问题。我得到了一个"' og:type'财产是必需的,但不存在。"此网址上的错误:http://thatnewjoint.com/posts/logic-driving-ms-daisy-feat-childish-gambino(以及我博客上的所有其他网址)。

og:类型元标记在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(通过考拉ruby gem)发布时,该链接不会被删除?我会假设og:type错误导致了这一点,但这里是该页面的元标记:

<meta property="og:url" content="http://thatnewjoint.com/posts/eminem-superman-throwback-thursdays" />
<meta property="og:title" content="Eminem - &quot;Superman&quot; [Throwback Thursdays] | ThatNewJoint | Premier Hip Hop Blog" />
<meta property="og:description" content="Classic from The Eminem Show. I&#39;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&amp;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">

使用更多信息进行编辑:

似乎如果我将网址放入FB Debugger,我最初会得到这个&#34;&#39; og:type&#39;财产是必需的,但不存在。&#34;错误但是,如果我然后单击&#34;获取新的刮擦信息&#34;按钮,它会找到所有正确的信息。 FB是否可能过早地试图抓取URL?似乎在第一次通过时,他们只是没有正确地抓取URL,但我无法弄清楚原因。

2 个答案:

答案 0 :(得分:6)

您需要使用your-app-id(唯一的Facebook App ID)将此HTML元标记添加到HEAD。请务必更换“your-app-id”:

<meta property="fb:app_id" content="your-app-id">

要创建FB应用ID,请转到此处:https://developers.facebook.com/apps

将同样独特的Facebook App ID添加到Facebook JS中,并尽可能靠近HTML body标签的顶部。请务必更换“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开发者仪表板中将您的FB应用程序从“开发者模式”中取出并将其置于“公共”模式。

有关FB Open Graph和元标记的详细信息,请参阅以下两个有用的链接:1。https://developers.facebook.com/docs/opengraph/using-objects 2. https://developers.facebook.com/docs/sharing/best-practices

这应该可以解决问题。如果您需要更多帮助,请告诉我。

我更新了这个答案,感谢kitdesai指出Facebook对他们的Graph API版本有新的要求,目前达到v2.1

答案 1 :(得分:2)

我有同样的问题,我的问题是我为og:url设置的网址末尾有一个'/',而我在facebook上发布的网页的网址没有。

调试器告诉我og:type尚未设置。我认为问题在于facebook的解析器将不匹配视为重定向而感到困惑。

无论如何,让它们匹配修复了我的问题。