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

jhi*_*009 4 facebook facebook-like facebook-graph-api

我的团队最近推出了一个大量使用Facebook的Like Button的Web应用程序.他们中的大多数工作正常,但Facebook或其URL Linter无法正确识别几个相似的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:it: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&格式HTML =

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

  1. Facebook编辑Meta标签下的文档指出:
    • "请注意,og:title和og:type最初只能编辑 - 在你的页面收到50个赞之后标题变得固定,并且在你的页面收到10,000个喜欢之后,类型就变得固定了." 我的数量远不及这些数字.
    • "为了在Facebook上反映更改,您必须强制删除页面.当页面管理员单击"赞"按钮或将URL输入Facebook URL Linter时,页面将被删除.您可以通过编程强制执行curL'ing the linter要刮掉的页面." 我已经尝试了所有这三种方法但没有成功.
  2. Facebook Like按钮 - 提取"错误"图像表明,如Facebook所声称的那样,linting URL不会重置缓存.
  3. Facebook Open Graph没有清除缓存表明这可能是Facebook缓存,它将在一段未知的时间后自行修复.
  4. Facebook喜欢按钮喜欢错误的网址建议等待24-32小时Facebook的缓存重置.自我的Open Graph标签上次设置以来已经超过64小时了.
  5. 为什么Facebook返回错误页面(影响Facebook赞和分享URL)?建议在发布之前提供给Facebook的任何URL(例如通过Like Button)都应该更改.我尝试更改URL,重命名id参数,但没有成功.

最可能的罪魁祸首似乎是Facebook缓存,但它已经被怀疑很久了,因为这个网站是当前直播活动的一部分,强调喜欢活动,我希望有人知道一个技巧,尽快让这个工作.谢谢!

jhi*_*009 5

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"呈现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&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 提交了一份错误报告.