2009-08-27 39 views
5

Giả sử tôi sở hữu/kiểm soát trang Facebook nơi các sự kiện được đăng. Tôi muốn hiển thị các sự kiện này trên một trang web khác (Trong trường hợp của tôi, một blog WordPress, nhưng đó không phải là phần quan trọng) trên trang "Sự kiện sắp diễn ra".Truy cập bên ngoài vào các sự kiện trên Facebook

Điều tôi không chắc chắn là: API Facebook có thể sử dụng được "bên ngoài" như thế này không? Tôi đã tải xuống thư viện PHP và chạy một ứng dụng demo hoạt động từ bên trong Facebook (tức là phát ra FBML mà facebook.com diễn giải và hiển thị cho người dùng đã đăng nhập), nhưng trong trường hợp của tôi, tôi muốn một bên thứ ba (máy chủ web) để truy vấn Facebook thường xuyên, thay vì khách truy cập trang web yêu cầu trực tiếp dữ liệu (HTML/JSON/v.v.) từ chính Facebook.

Điều này có thể xảy ra với API Facebook không? Máy chủ web của tôi sẽ tự xác thực như thế nào? Tôi phải lưu thông tin gì?

Lưu ý: Tôi đang tìm kiếm thông tin nhiều hơn ở cấp khái niệm "sơ đồ trình tự", không chỉ yêu cầu mã. Phần đó tôi có thể tự tìm ra. ;) Thật không may, Google và các nhà phát triển FB wiki đã không được hoàn toàn sắp tới. Tôi cần biết gì để tôi có thể bắt đầu viết mã?

+0

Xin chào, tôi đã tự hỏi nếu bạn có may mắn với điều này, tôi đang cố gắng triển khai một phiên bản đơn giản tương tự như bạn và tò mò về phương pháp bạn đã sử dụng. Cảm ơn! –

Trả lời

5

Đây là một cái nhìn tổng quan cơ bản về cách tôi đã thực hiện nó cho một vài người trong số khách hàng của tôi, những người muốn chức năng tương tự:

  1. Tạo một ứng dụng khá cơ bản mà nhắc cho Extended permissions, đặc biệt là "offline_access" và bất cứ điều gì khác bạn cần
  2. Store kết quả Session Key trong cơ sở dữ liệu của bạn với các UID
  3. Tạo, chứng thực webservice an toàn cho ứng dụng của bạn mà cho phép bạn để có được những thông tin mà bạn cần cho một UID mà bạn cung cấp, sử dụng phiên mà bạn đã được lưu trữ trong cơ sở dữ liệu của bạnTrên trang web đưa ra yêu cầu đối với dịch vụ web của ứng dụng, hãy nhớ lưu kết quả trong một khoảng thời gian nhất định và chỉ thực hiện yêu cầu mới đối với dịch vụ web của bạn sau khi bộ nhớ cache hết hạn (tôi sử dụng 5-10 phút cho hầu hết các dịch vụ của tôi)

Vì vậy, về cơ bản ứng dụng Facebook của bạn hoạt động giống như proxy giữa trang web và người dùng, thực hiện tất cả việc xác thực và yêu cầu bằng các phương tiện hợp pháp.

Tôi đã sử dụng dịch vụ web vì tôi chỉ muốn duy trì một ứng dụng Facebook cho các nhu cầu của nhiều khách hàng. Nó hoạt động như thế này (trong một sơ đồ nghệ thuật ASCII không-rất-awesome):

Facebook User 1 \     /Client Website 1 
Facebook User 2 --- Facebook App --- Client Website 2 
Facebook User 3/     \ Client Website 3

Lưu ý: Tôi chỉ làm điều này cho người sử dụng, chứ không phải trang, vì vậy mileage của bạn có thể thay đổi.

+0

là dịch vụ web có thêm nhiều giá trị trong thiết lập này không? – klochner

+1

Tôi đã sử dụng dịch vụ web trong trường hợp của mình vì tôi có nhiều ứng dụng khách sử dụng một ứng dụng Facebook và các trang web của cùng một khách hàng đó nói chuyện với ứng dụng Facebook để hiển thị dữ liệu trên trang web của riêng họ. Nếu trang web và ứng dụng là một trong cùng một thì bạn có thể loại bỏ bit dịch vụ web. Như tôi đã nói trong câu trả lời của tôi, đây chỉ là thiết lập của tôi. Brant có thể làm một cái gì đó tương tự và loại bỏ các bit anh ta không yêu cầu. –

+0

cảm ơn, chỉ tò mò - nghĩ rằng bạn có thể thấy một số cải thiện tốc độ bằng cách lưu vào bộ nhớ đệm cục bộ với webservice, nhưng có vẻ như rất nhiều phức tạp hơn nếu bạn không kéo nhiều dữ liệu. – klochner

3

AFAIK ngoài thông tin người dùng, bạn không thể tìm nạp bất kỳ dữ liệu nào khác từ facebook. Tuy nhiên, bạn có thể thử cách khác - giả sử tạo một ứng dụng lưu trữ các sự kiện và thông tin liên quan khác trên máy chủ web và sau đó trang web khác của bạn có thể dễ dàng truy cập thông tin đó.

3

Bạn có thể làm Events.get bằng API Facebook sau đó cung cấp ID trang/hồ sơ bạn muốn nhận sự kiện. Tùy thuộc vào cách thiết lập trang của bạn, bạn có thể phải xác thực, chỉ cần sử dụng tài khoản Facebook của bạn, vì bạn sẽ có quyền truy cập vào tất cả các sự kiện. oh và chắc chắn rằng bạn làm rất nhiều bộ nhớ đệm để bạn không đánh Facebook trên mỗi tải trang.

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