2010-09-22 22 views
5

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.

Trả lời

1

SWF ứng dụng tab FB nhận khóa phiên trong flashvars, có thể được trao đổi với mã thông báo oauth! http://fraserhobbs.com/2010/07/flash-facebook-graph-api-in-tabs/ Thực sự đã giúp tôi.

+0

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

0

Sử dụng thẻ <fb:share> sẽ làm tất cả điều đó cho bạn. Nếu bạn chưa đăng nhập và bạn nhấp vào liên kết <fb:share>, nó sẽ yêu cầu bạn đăng nhập, nếu bạn chưa chấp nhận đơn đăng ký, nó sẽ yêu cầu bạn chấp nhận nó, sau đó đăng lên tường của họ những gì bạn muốn. Tôi đã làm điều này với trang web của tôi để chia sẻ sản phẩm không phải điểm số trò chơi nhưng nó có thể được thực hiện tất cả như nhau.

EDIT:

Kiểm tra Graph API for publishing. Nếu bạn đang sử dụng đèn flash, tôi khuyên bạn nên sử dụng các biểu tượng Facebook Flash SDK

+0

Cảm ơn câu trả lời, nhưng tôi cần có khả năng gọi chức năng này từ bên trong ứng dụng flash. Tôi đã tự hỏi liệu chức năng tương tự có thể được thực hiện thông qua một cuộc gọi FBJS? Đó sẽ là giải pháp tốt nhất cho tôi nhưng tôi đã không thấy điều đó được thực hiện ở bất cứ đâu – bharling

+0

@bharling Tôi đã cập nhật câu trả lời của mình. – Bot

+0

@bharling: Câu trả lời của jostster có phù hợp với bạn không? Tôi cũng thích giải pháp này. – goliatone

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