Facebook URL Linter为错误的页面提取数据

时间:2011-07-20 00:09:32

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

我的团队最近推出了一款大量使用Facebook的Like Button的网络应用程序。他们中的大多数工作正常,但Facebook或其URL Linter无法正确识别几个相似的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个喜欢之后,该类型将被修复。” < strong>我喜欢的数字远不及这些数字。
    • “为了在Facebook上反映更改,您必须强制删除页面。当页面管理员点击”赞“按钮或将URL输入Facebook URL Linter时,页面会被删除你可以通过编程方式强制你的页面被cURL'ing linter擦掉。“ 我已经尝试了所有这三种方法而没有成功。
  2. Facebook Like button - fetches "wrong" image表示,提示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的任何网址(例如通过Like按钮)都应该更改。 我尝试更改网址,重命名id参数,但没有成功。
  6. 最可能的罪魁祸首似乎是Facebook缓存,但它已经被怀疑很长时间,因为这个网站是当前直播活动的一部分,强调喜欢活动,我希望有人知道一个技巧,尽快让这个工作。谢谢!

2 个答案:

答案 0 :(得分:5)

Facebook的Graph API和URL Linter中的一些内容会删除多个URL参数中的第一个。

图表API

  1. 当参数字符串为“?v = videos&amp; id = 17”时,“id”丢失:
    https://graph.facebook.com/http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17
  2. 当参数字符串为“?id = 17&amp; 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
  4. 不幸的是,第三点对我的情况没有帮助:我没有直接访问图表,所以我不能只插入“?id =”。

    URL Linter

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

    1. 当嵌套的编码参数字符串为“?v = videos&amp; id = 17”时,将为“3M Couple Speak Video Contest”呈现Open Graph标签。这是“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&amp; v = videos”时,为“3M夫妻说翻译竞赛”呈现开放图形标签。这是“v =视频”不存在时的预期行为:
      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解析器,切换嵌套编码参数的顺序会产生相同的数据,这是正确的:
    5. 不幸的是,第三点再次对我的情况没有帮助:我们需要对URL进行嵌套和编码。

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

答案 1 :(得分:1)

Facebook页面上的iframe源代码似乎是这个网址:

  

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" />