2011-12-22 8 views
6

Tôi đã xác định "sách" làm đối tượng biểu đồ mở trong ứng dụng Facebook của mình. Sách là một đơn vị hợp lý và người dùng có thể xem sách bằng nhiều cách khác nhau trong ứng dụng. Tuy nhiên, không có URL nào trong ứng dụng của tôi tương ứng với bất kỳ cuốn sách nào.Một đối tượng biểu đồ mở có tương ứng với một trang hiển thị của người dùng không?

Tôi nghĩ rằng tôi có thể có URL tạo ra dữ liệu meta biểu đồ mở cho Facebook đằng sau hậu trường. Ví dụ: http://www.example.com/opengrpah/object_book.php?id=3265 sẽ trả về tiêu đề, tác giả và thông tin khác cho sách nhưng không thực sự là người dùng có thể nhìn thấy.

Tuy nhiên dường như Facebook sử dụng URL đối tượng cho các hành động liên quan đến đối tượng. Nếu tôi tạo hành động liên quan đến sách (ví dụ: thêm sách), thì nếu ai đó nhấp vào liên kết trong biểu ngữ, họ sẽ chuyển đến URL object_book.php, thay vì trang ứng dụng thực tế. Vì vậy, họ sẽ thấy dữ liệu meta nhưng không có gì hữu ích.

Đây có phải là thiết kế không? Chắc chắn một đối tượng không cần phải tương ứng với một trang người dùng có thể nhìn thấy. Chúng tôi có thể không có dữ liệu đối tượng được rút ra từ một URL hay không, nhưng có đối tượng đó được hiển thị cho người dùng trong ngữ cảnh của ứng dụng không?

+0

Tôi đang gặp phải vấn đề tương tự ở đây. Cuối cùng, bạn đã làm điều đó như thế nào? – ksol

+0

ksol, tôi không tìm thấy câu trả lời. Tôi đang nghiên cứu ứng dụng của mình để có 1 trang cho mỗi đối tượng. Tôi nghĩ rằng đó là thiết kế sai, nhưng tôi phải làm điều đó để có thể sử dụng Timeline. – Garth

+0

Có vẻ như không có cách nào để đạt được những gì chúng tôi muốn bây giờ, ít nhất. Tôi đã kết thúc bằng cách sử dụng một bộ điều khiển cụ thể cho tất cả các đối tượng OG của tôi, sau đó tôi làm một chuyển hướng thông qua JS. Dường như là cách duy nhất ngay bây giờ – ksol

Trả lời

2

Chỉ cần chuyển hướng từ URL đối tượng đồ thị mở của bạn đến trang ứng dụng thực tế? Hoặc cách thiết kế trang ứng dụng của bạn để cung cấp siêu dữ liệu Open Graph?

Tôi nghĩ rằng đây có thể là một giải pháp phức tạp.

+0

Chuyển hướng là khả thi về mặt kỹ thuật, nhưng nó rất xấu, và tôi muốn tránh nó. Cung cấp siêu dữ liệu Open Graph trong ứng dụng sẽ yêu cầu thiết kế lại hoàn chỉnh vì đây là ứng dụng AJAX mà không có trang cố định cho từng đối tượng. Tôi hơi ngạc nhiên bởi giả định tiềm ẩn rõ ràng trong Biểu đồ mở để đối tượng các trang ánh xạ tới trang của người dùng. Nó sẽ có ý nghĩa vào năm 1995 khi Web là tĩnh, nhưng bây giờ với nội dung động nó không. – Garth

+0

Theo nhận xét của bạn, tôi nghĩ rằng đối tượng của bạn (có thể là sách) trong ứng dụng của bạn không thể truy cập được bằng một 'URL' cụ thể. Đúng? Nếu vậy, điều đó có nghĩa là thiết kế của bạn là sai. Tôi nghĩ rằng quyết định thiết kế của Facebook bạn đã đề cập trong nhận xét của bạn là hoàn toàn đúng.Một 'đối tượng' sẽ có thể được truy cập bởi một URL cụ thể và bạn có thể cung cấp siêu dữ liệu về đối tượng đó trong trình xử lý URL đó. AJAX không có nghĩa là bạn không cần cung cấp URL cho các đối tượng. –

+0

Semun, AJAX hoàn toàn có nghĩa là bạn không phải cung cấp URL có thể truy cập của người dùng cho các đối tượng. Trong ứng dụng của tôi, ví dụ, danh sách sách được hiển thị trên một trang, nhưng các sách riêng lẻ được hiển thị trong một div nổi trên trang được điền bởi các cuộc gọi AJAX. Một ví dụ khác, một trò chơi có thể có nhiều đối tượng trong đó nên tồn tại dưới dạng đối tượng biểu đồ mở, nhưng không có trang hiển thị người dùng nào tương ứng với chúng. – Garth

0

Trong ứng dụng tôi đang làm việc trên chúng tôi có một vấn đề tương tự vì nó là một ứng dụng FB Canvas, vì vậy nếu url og: cho các đối tượng của chúng tôi là một cái gì đó như http://apps.facebook.com/our_namespace/?my_first_obj=0 thì FB thấy bản thân ứng dụng thay vì đối tượng được nạp vào ứng dụng. Đó là nơi cuối cùng chúng tôi muốn mọi người hạ cánh, nhưng chúng tôi phải cung cấp một URL trực tiếp cho ứng dụng của chúng tôi cung cấp các thẻ meta thích hợp, giống như tình huống của bạn. Tôi chỉ đơn giản là đặt điều này trong đầu của các trang:

<script> 
    try { 
     if (top.location.href === window.location.href) { 
      window.location.replace("http://apps.facebook.com/our_namespace/"+window.location.search); 
     } 
    } catch(e) {} 
</script> 

Vì vậy, nếu ai đó được gửi trực tiếp đến trang đó, họ ngay lập tức được chuyển đến Canvas App của chúng tôi, nhưng scraper của Facebook vẫn có thể lấy dữ liệu meta chính xác về đối tượng .

0

Tôi gặp sự cố tương tự và tôi đã kết thúc với 2 lớp cho đối tượng của mình. Một là đối tượng "chính", mà thực sự là đối tượng (cuốn sách trong trường hợp của bạn, mục tiêu của tôi). Sau đó, tôi có một đối tượng "người dùng" khác, thực sự là một liên kết giữa đối tượng chính và người dùng. Đối tượng người dùng này có url như mysite/user/object và đó là những gì tôi xuất bản lên biểu đồ fb với hành động "add".