【问题标题】:Facebook URL Linter pulls data for wrong pageFacebook URL Linter 为错误页面提取数据
【发布时间】:2011-07-20 00:09:31
【问题描述】:

我的团队最近推出了一个网络应用程序,该应用程序大量使用了 Facebook 的“赞”按钮。它们中的大多数都可以正常工作,但是 Facebook 或其 URL Linter 无法正确识别一些 Like URL。这些 URL 用于我们应用程序上的一个页面,该页面重定向到 Facebook 应用程序中的相应页面...

示例网址:
http://www.3mframeworks.com/pages/redirect?url=http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17

Facebook 的 URL Linter 返回数据,就好像“id”参数不存在一样:
https://developers.facebook.com/tools/lint?url=http%3A%2F%2Fwww.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fv%253Dvideos%2526id%253D17

其他 Open Graph 解析器返回正确的数据:
OG:它:http://ogit.heroku.com/inspect?url=www.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fv%253Dvideos%2526id%253D34
OpenGraph.In:http://www.opengraph.in/?url=www.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fv%253Dvideos%2526id%253D34&format=html

我花了几个小时寻找解释...

  1. Facebook's documentation,在编辑元标签下,声明:
    • “请注意,og:title 和 og:type 最初只能编辑 - 在您的页面收到 50 次赞后,标题变为固定,在您的页面收到 10,000 次赞后,类型变为固定。” 我的点赞数远不及这些数字。
    • “要使更改反映在 Facebook 上,您必须强制抓取您的页面。当页面的管理员单击“赞”按钮或将 URL 输入 Facebook URL Linter 时,该页面将被抓取。您可以以编程方式强制通过 cURL'ing linter 来抓取您的页面。” 我已经尝试了所有这三种方法,但均未成功。
  2. Facebook Like button - fetches "wrong" image 建议 linting URL 不会像 Facebook 声称的那样重置缓存。
  3. Facebook Open Graph not clearing cache 暗示这可能是 Facebook 缓存,它会在一段未知的时间后自行修复。
  4. facebook like button liking wrong url 建议等待 24-32 小时以重置 Facebook 的缓存。 距离我上次设置 Open Graph 标记已有 64 多个小时。
  5. Why is Facebook returning the wrong page (affects Facebook Like and Share URL)? 建议在发布之前向 Facebook 提供的任何 URL(例如通过“赞”按钮)都应该更改。 我尝试更改 URL,重命名 id 参数,但没有成功。

最有可能的罪魁祸首似乎是 Facebook 缓存,但它已经存在很长时间了,而且由于该网站是当前正在进行的强调 Like 活动的活动的一部分,我希望有人知道一个技巧来尽快让这个工作。谢谢!

【问题讨论】:

    标签: facebook facebook-like facebook-graph-api


    【解决方案1】:

    Facebook 的 Graph API 和 URL Linter 中的某些部分删除了多个 URL 参数中的第一个参数之外的所有参数。

    图形 API

    1. 当参数字符串为“?v=videos&id=17”时,“id”丢失:
      https://graph.facebook.com/http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17
    2. 当参数字符串为“?id=17&v=videos”时,“v”丢失:
      https://graph.facebook.com/http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fid%3D17%26v%3Dvideos
    3. 如果显式声明了 Graph “id” 参数,则不会发生这种情况:
      https://graph.facebook.com/?id=http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17

    不幸的是,第三点对我的情况没有帮助:我没有直接访问图表,所以我不能只插入“?id =”。

    URL Linter

    对于我的应用,需要所有参数来呈现正确的 Open Graph 元标记,结果支持我的发现:

    1. 当嵌套的编码参数字符串为“?v=videos&id=17”时,将为“3M Couple Speak Video Contest”呈现开放图标签。这是“id”参数不存在时的预期行为:
      https://developers.facebook.com/tools/lint?url=http%3A%2F%2Fwww.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fv%253Dvideos%2526id%253D17
    2. 当嵌套的编码参数字符串为“?id=17&v=videos”时,会为“3M Couple Speak Translation Contest”呈现 Open Graph 标签。这是不存在“v=videos”时的预期行为:
      https://developers.facebook.com/tools/lint?url=http%3A%2F%2Fwww.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fid%253D17%2526v%253Dvideos
    3. 这不会发生在非嵌套、非编码的参数字符串中:
      https://developers.facebook.com/tools/lint?url=http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17
    4. 对于其他 Open Graph 解析器,切换嵌套的编码参数的顺序会产生相同的数据,这是正确的:

    不幸的是,第三点对我的情况没有帮助:我们需要嵌套和编码 URL。

    这解释了我看到的错误数据,以及为什么它只发生在具有多个参数的 URL 上。我向 Facebook 提交了bug report

    【讨论】:

      【解决方案2】:

      该 Facebook 页面上的 iframe 源似乎位于此 url:

      couplespeak-3m-production.heroku.com/videos

      该页面包含显示在 Facebook Linter 中的标签。

      <meta content='3M Couple Speak Video Contest' property='og:site_name' /> 
      <meta content="3M Couple Speak Video Contest" property="og:title" /> 
      <meta content="website" property="og:type" /> 
      <meta content="http://apps.facebook.com/couplespeak?v=videos" property="og:url" /> 
      <meta content="http://www.3mframeworks.com/images/video_background.jpg" property="og:image" /> 
      <meta content="100001154487117" property="fb:admins" /> 
      

      【讨论】:

      • Open Graph 数据来自重定向页面,而不是 Facebook 应用 iframe。不知道这一点就更难诊断,所以我很抱歉没有更清楚。无论如何,问题似乎存在于 Facebook 对编码 URL 参数的处理中(请参阅我的答案),因此除了提交错误报告之外我无能为力。感谢您的调查!
      • 知道了。我误解了这个问题。我在 Facebook 的开发者关系团队,我会转发你的调查,看看 linter 的行为是否是故意的。感谢您对此进行调查。
      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多