Facebook的Open Graph的履带式触发在轨操作JSON响应(facebook open

2019-06-25 15:11发布

出于某种原因,Facebook的履带引发了我的rails行动JSON响应。 这将导致动作只返回对象的JSON表示,没有经过正常的HTML标记+开放图形标签。 我曾与导轨3.2.6测试这一点。 我使用Facebook的Open Graph调试器,看看有什么刮板看到: http://developers.facebook.com/tools/debug 。

该代码是非常简单的。 想象一下,一个对象的一个​​简单的“作秀”行为,例如用户。 它结束与:

respond_to do |format|
  format.js { render :json => @this.to_json }
  format.html
end

facebook的履带触发format.js,这导致开放图形标签不被呈现。 任何想法,为什么这件事会发生,或如何解决? 谢谢。

Answer 1:

确定这样的Facebook发送接受的报头

*/*

由于没有特定的格式要求,轨道只是下降的顺序respond_to代码块。 如果您在第一的respond_to列出你的js像下面轨块将facebook的开放式履带与JSON这是行不通的回应:

respond_to do |format|
  format.js { render :json => @this.to_json }
  format.html
end

只需切换顺序,以便在默认情况下轨与HTML响应:

respond_to do |format|
  format.html
  format.js { render :json => @this.to_json }
end

我不知道为什么Facebook并没有指定他们正在寻找的格式...似乎很愚蠢的我。 希望这有助于别人的道路。



Answer 2:

检查哪些HTTP请求头Facebook的履带正在发送-尤其是接受头。

很可能他们发送,它可以让你的应用程序认为它有送东西不同,那么普通的HTML输出的值。



文章来源: facebook open graph crawler triggering json response in rails actions