是否有可能制作“锚定导航” - Facebook Conform

时间:2012-01-17 13:23:11

标签: facebook parsing

我制作了一个基于Ajax的网页。 出于兼容性原因,我做了一个“锚点导航”来支持所有浏览器和历史按钮。

现在,我有以下链接: http://www.harddance.at/#!/newsdetails/62/HoH+weibliche+Acts+bestaetigt

当用户将此链接发布到Facebook时,它看起来像这样:

enter image description here

我有一个“?_escaped_fragment_?”在链接描述中。 Facebook正在解析错误的内容。

抱歉我的英语不好。

3 个答案:

答案 0 :(得分:2)

我会从这个问题OpenGraph on Ajax Based Website

中看到以下信息

Open Graph标记必须存在于使用纯HTTP GETable的HTML页面上。

这是因为当用户与OG对象交互时(比如,执行操作等),Facebook将在OG URL上执行HTTP GET,并期望看到标记中返回的OG标记。

解决方案是为每个对象创建规范网址。这些URL包含基本的HTML标记,包括OG标记。

在对这些URL的请求中,如果您看到包含“facebookexternalhit”的传入useragent字符串,则呈现HTML。如果不这样做,则提供302重定向到您的ajax URL。在ajax URL上,您发布的类似按钮和任何OG操作应指向规范URL对象

示例:

作为用户,我在http://yoursite.com/#!/artists/monet。我点击一个like按钮,或者发布一个动作,但是你发布动作时,like按钮的href参数或对象的URL应该是对象的web命中规范URL - 在这种情况下,可能是http://yoursite.com/artists/monet

当使用浏览器的用户点击http://yoursite.com/artists/monet时,您应将其重定向到http://yoursite.com/#!/artists/monet,但如果传入的用户表示它是Facebook的刮刀,则只需返回代表艺术家Monet的标记。

对于真实世界的例子,请看Deezer,Rdio和Mog都使用这种设计模式。

答案 1 :(得分:0)

请在可能有助于您调试此问题的其他帖子上查看我的回答:

http://facebook.stackoverflow.com/a/8887746/558021

我怀疑这个问题是由于缺少og:tags而造成的。

答案 2 :(得分:0)

现在,我看到以下“事实”:

Facebook,在“/#!/之后使用Elements创建一个GET参数。 所以,我可以为Facebook Crawler创建“OpenGraph”页面,我已经解决了我的问题! 提示有自己的“OpenGraph”页面,我来自:OpenGraph on Ajax Based Website

克里斯

  

if(isset($ _ GET ['_ escaped_fragment_'])和preg_match(“/ facebookexternalhit / is”,$ _SERVER ['HTTP_USER_AGENT'])){

$link_details = explode("/", strip_tags(html_entity_decode($_GET['_escaped_fragment_'])));

$show_page = $link_details[1];
$show_id = urldecode($link_details[2]);
$show_title = urldecode($link_details[3]);


      // Eventdetails
      if($show_page=="eventdetails") {
          include("./includes/opengraph_eventdetails.php");
      }


      // Newsdetails
      if($show_page=="newsdetails") {
          include("./includes/opengraph_newsdetails.php");
      }


exit();
}