7

Vì một số lý do, trình thu thập thông tin của facebook đang kích hoạt phản hồi json trong các hành động đường ray của tôi. Điều này làm cho hành động chỉ trả về biểu diễn json của đối tượng, không có đánh dấu html bình thường + mở thẻ đồ thị. Tôi đã thử nghiệm này với đường ray 3.2.6. Tôi sử dụng trình gỡ lỗi đồ thị mở facebook để xem những gì scraper đang thấy: http://developers.facebook.com/tools/debug.facebook trình thu thập biểu đồ mở kích hoạt phản hồi json trong đường ray hành động

Mã rất đơn giản. Hãy tưởng tượng một hành động "hiển thị" đơn giản cho một đối tượng, ví dụ như một Người dùng. Nó kết thúc bằng:

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

Trình thu thập thông tin của facebook đang kích hoạt định dạng.js, khiến thẻ biểu đồ mở không được hiển thị. Bất kỳ ý tưởng nào tại sao điều này có thể xảy ra hoặc cách khắc phục? Cảm ơn.

Trả lời

15

Ok để Facebook gửi một chấp nhận tiêu đề của

*/* 

Vì không có định dạng cụ thể được yêu cầu, đường ray chỉ đi xuống khối respond_to theo thứ tự. Nếu bạn liệt kê js của bạn đầu tiên trong khối respond_to như đường ray dưới đây sẽ đáp ứng với facebook bánh xích mở với JSON mà sẽ không làm việc:

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

Chỉ cần chuyển đổi thứ tự như vậy theo đường ray mặc định đáp ứng với HTML:

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

Tôi không chắc tại sao Facebook không chỉ định định dạng mà họ đang tìm kiếm ... có vẻ khá ngu ngốc đối với tôi. Hy vọng rằng điều này là hữu ích cho ai đó xuống đường.

+0

Ngoài ra còn có các đại lý người dùng “thực” nói rằng họ sẽ chấp nhận */* - ví dụ (IIRC) cũ IE sẽ thực hiện việc đó khi tải lại trang. Vì vậy, có lẽ tốt nhất để thiết lập ứng dụng của bạn rằng nó phục vụ HTML như là ưu tiên số 1. – CBroe

+0

Điều này dường như không hoạt động, tôi đã thử các đơn đặt hàng khác nhau cho format.html, format.js và format.json. Có vẻ như Rails đang diễn giải 'HTTP_ACCEPT' */* là format.json. Bất kỳ cách nào tôi có thể sửa lỗi này? Tôi đã đăng câu hỏi của mình ở đây: http://stackoverflow.com/questions/12094683/facebook-open-graph-action-rails-return-json-or-html – Dean

2

Kiểm tra xem tiêu đề yêu cầu HTTP mà trình thu thập thông tin Facebook đang gửi - đặc biệt là tiêu đề Chấp nhận tiêu đề.

Cũng có thể là chúng gửi giá trị cho phép ứng dụng của bạn cho rằng ứng dụng đó phải gửi một thứ gì đó khác với đầu ra HTML bình thường.

+0

Dường như chấp nhận là "*/*". Bình chọn để chỉ cho tôi đúng hướng! Trả lời dưới đây. – Marc

Các vấn đề liên quan