Thứ nhất xin lỗi về độ dài của câu hỏi này, và để hỏi về API Facebook (dường như là một trong những API không phù hợp nhất trên thế giới ...).Làm cách nào để thực hiện bất kỳ loại chia sẻ thông tin nào từ trong tab Facebook?
Tình huống: Chúng tôi đang sản xuất một sản phẩm Facebook 'cộng đồng' - nhập trang cho khách hàng của chúng tôi, có các tab Facebook chuẩn, một trong số đó nhúng một trò chơi Flash. Vào cuối của trò chơi này, chúng tôi muốn có thể chia sẻ điểm số cuối cùng của người dùng thông qua một bài tường, và cũng mời bạn bè để thách thức số điểm.
Thứ nhất - khách hàng nhất quyết rằng trò chơi xuất hiện trên một tab trong trang, vì vậy hãy chuyển tất cả ứng dụng này sang một ứng dụng (ví dụ: apps.facebook.com
) đáng tiếc không phải là một tùy chọn. Tôi biết bạn có thể nhúng ứng dụng trên tab thay vì FMBL tĩnh, nhưng tôi đã thử điều này và kết quả về cơ bản là giống nhau hoặc không thành công (tab áp đặt các hạn chế nghiêm ngặt về những gì có thể được hiển thị, thực thi việc sử dụng FBML và phủ nhận FB:Iframe
cho người mới bắt đầu).
Hiện tại, chúng tôi đang nhúng trò chơi này vào tab FBML tĩnh, sử dụng thẻ fb:swf
và cầu FBJS để cho phép tương tác đơn giản trên tab (điều hướng đến cửa sổ mới, v.v.). Chúng tôi cũng đã thử cách tiếp cận nhúng FBJS và làm cho trò chơi trở thành một ứng dụng và thêm vào đó như một tab trên trang. Trong mọi trường hợp, dường như không có cách nào để có được UID của người dùng đang xem khi ở trong môi trường tab (mặc dù thực tế là họ phải đăng nhập để xem trang ở nơi đầu tiên). Bản thân trò chơi là Flash ActionScript 3 và tôi có tùy chọn sử dụng API Facebook ActionScript 3. Sử dụng phương pháp này quá trình tốt nhất mà tôi đã quản lý để đưa ra cho đến nay được nêu dưới đây:
0) Tạo một ứng dụng riêng biệt với mục đích duy nhất để đối phó với việc chia sẻ số điểm vv
1) Nhấp chuột tài 'Chia sẻ điểm số của tôi' ở cuối trò chơi trên trang TAB.
2) SWF thực hiện yêu cầu đăng nhập Facebook chuẩn của ứng dụng 'bằng cách mở một tab mới.
3) Người dùng xác nhận hành động này và đóng cửa sổ mới.
4) người dùng nhấp chuột một lần nữa trong trò chơi Flash để xác nhận rằng họ đã đăng nhập.
5) SWF thực hiện facbook.verifySession()
và mở thêm một cửa sổ yêu cầu sự cho phép để viết trên tường của người dùng.
6) Người dùng xác nhận điều này và một lần nữa được đưa trở lại trò chơi.
7) SWF nghe cho 'FacebookEvent.PERMISSIONS_CHANGED' và đăng lên tường khi điều này được xác nhận.
Vì không có cách nào để xác minh xem người dùng đã thêm ứng dụng khi tải trong một tab, có khả năng họ sẽ phải tuân theo quy trình này mỗi khi họ muốn đăng kết quả từ trò chơi, điều này rất ghê gớm. Vấn đề chính có vẻ là bất kỳ RIA nào nằm trên một tab Facebook sẽ không nhận được thông tin hữu ích nào trong mã thông báo OAuth cho tab đó, trái ngược với RIA đang ngồi trên apps.facebook.com
nhận tất cả thông tin tôi cần trong tiêu đề yêu cầu.
Nói một cách đơn giản, tôi cần cách đơn giản nhất, đơn giản nhất để tạo bài đăng trên tường Facebook từ trong tab trang Sản phẩm Facebook, cho dù sử dụng FMBL, FBJS, ActionScript 3, ASP hay bất kỳ kết hợp nào của chúng.
Tôi đã thấy điều này: https://stackoverflow.com/questions/3674923/facebook-share-or-publish-dialogue-from-page-tab-closed thực sự là cùng một câu hỏi mà tôi đang hỏi, nhưng câu trả lời không rõ ràng và dường như không giải quyết được vấn đề của tôi.
Nếu cách này không hiệu quả, tôi khuyên bạn nên sử dụng ứng dụng khung nội tuyến (có thể bật tab) và sử dụng SDK js để thực hiện cuộc gọi đến biểu đồ api từ flash. Nên được khá liền mạch để thực hiện các cuộc gọi trong bối cảnh của người dùng mà không có bất kỳ công việc xung quanh. – Jason