【问题标题】:Is it possible to make "Anchor Navigation" - Facebook Conform是否可以制作“锚导航” - Facebook Conform
【发布时间】:2012-01-17 13:23:11
【问题描述】:

我制作了一个基于 Ajax 的网页。 出于兼容性考虑,我制作了一个“Anchor-Navigation”来支持所有浏览器和历史按钮。

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

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

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

对不起,我的英语不好。

【问题讨论】:

    标签: facebook parsing


    【解决方案1】:

    我会看到我从这个问题OpenGraph on Ajax Based Website 中收集到的以下信息


    Open Graph 标记必须出现在可以通过纯 HTTP 获取的 HTML 页面上。

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

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

    在对这些 URL 的请求中,如果您看到传入的用户代理字符串包含“facebookexternalhit”,那么您将呈现 HTML。如果你不这样做,你会提供一个 302 重定向到你的 ajax URL。在 ajax URL 上,您的点赞按钮和您发布的任何 OG 操作都应指向规范 URL 对象

    例子:

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

    当使用浏览器的用户点击http://yoursite.com/artists/monet 时,您应该将他们重定向到http://yoursite.com/#!/artists/monet,但如果传入的用户代理说它是 Facebook 的抓取工具,您只需返回代表艺术家莫奈的标记。

    有关真实世界的示例,请参阅都使用此设计模式的 Deezer、Rdio 和 Mog。

    【讨论】:

    • 谢谢!你链接的问题是我的问题。只有 4 条信息:)
    【解决方案2】:

    请在另一篇文章中查看我的回答,这可能有助于您调试此问题:

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

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

    【讨论】:

    • 感谢您的回答。我尝试使用 Open_Graph 标签,但它并没有解决我的问题。问题是,“?_escaped_fragment_?”,Facebook 尝试从这个“评论的 url”解析内容,但它不起作用。
    • 上图中的所有信息都是从og:tags中提取的——包括带有“?_escaped_fragment_?”的URL部分。请在上面的链接中阅读我的答案 - 那里还有关于如何测试您对 og:tags 所做更改的详细信息。
    • 我测试了所有东西,但没有任何效果。问题是 Facebook,当我发布带有 /#!/ 参数的随机 URL 时,解析失败。我的解决方案:没有“!”的锚导航字符。还是有其他方法? img6.imagebanana.com/img/4hf2e601/Unbenannt.PNG
    • 您仍然没有在您的页面上实现og:tags
    • 我删除了它们,但我测试了它。我必须找到一个适用于 Ajax 页面的解决方案(如果 Meta 标签不在代码的“head”部分中,则 Meta 标签被 Facebook 忽略,并且我将 Ajax 内容加载到“Ajax Content”Div 中,所以我目前只能使用 og:tags 定义 1 页。我将 /#!/ Anchor 替换为 /#/ Anchor,一切正常。
    【解决方案3】:

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

    Facebook 在“/#!/. 所以,我可以为 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();
    }
    

    【讨论】:

    • 这不是我在回答中推荐的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2013-09-01
    • 1970-01-01
    相关资源
    最近更新 更多