3/3/12

Làm chủ việc phát triển ứng dụng Facebook bằng PHP, IBM Rational Application Developer, IBM WebSphere Application Server và DB2, Phần 1: Thiết lập các thành phần(4)

Tóm tắt:  Phát triển một ứng dụng Facebook sử dụng cả ngôn ngữ lập trình PHP và Java™. Hướng dẫn này sẽ mang lại cho bạn một cái nhìn đầu tiên về Facebook và sau đó từng bước dẫn bạn qua quá trình cài đặt các thành phần cần thiết để tạo ra một ứng dụng Facebook. Tiếp theo, bạn sẽ đi một vòng khảo sát Facebook về cách làm thế nào để tích hợp các ứng dụng của bạn vào trang web. Cuối cùng, bạn sẽ bắt đầu với một ứng dụng cơ bản nhất. Trong phần 2 và 3 của loạt hướng dẫn này, bạn sẽ tìm hiểu làm thế nào để phát triển các ứng dụng mà bạn đã tạo ra trong Phần 1.

Làm chủ việc phát triển ứng dụng Facebook bằng PHP, IBM Rational Application Developer, IBM WebSphere Application Server và DB2, Phần 1: Thiết lập các thành phần(1,2,3)
Làm chủ việc phát triển ứng dụng Facebook bằng PHP, IBM Rational Application Developer, IBM WebSphere Application Server và DB2, Phần 1: Thiết lập các thành phần(4)
Làm chủ việc phát triển ứng dụng Facebook bằng PHP, IBM Rational Application Developer, IBM WebSphere Application Server và DB2, Phần 1: Thiết lập các thành phần(5)
Làm chủ việc phát triển ứng dụng Facebook bằng PHP, IBM Rational Application Developer, IBM WebSphere Application Server và DB2, Phần 1: Thiết lập các thành phần(6)
Thiết kế một ứng dụng Facebook
Lý tưởng nhất, bạn muốn thiết kế một ứng dụng lây lan giống như virut - một ứng dụng mà những người sử dụng thấy là mang lại lợi ích đáng kinh ngạc hoặc rất nhiều vui thích khi sử dụng, hoặc cả hai, và làm cho người sử dụng và bạn bè của họ tham gia các tương tác, làm nó lan truyền không ai nhận biết qua khắp mạng Facebook. Bạn không thể đảm bảo ứng dụng là trúng đích, vì điều này phụ thuộc vào ý tưởng cốt lõi của ứng dụng, nhưng bạn có thể đảm bảo rằng nếu bạn nhắm trúng một ý tưởng như thế, ứng dụng của bạn được tích hợp vào trong nền tảng Facebook đủ tốt để nó tự tăng tiến thông qua tiếp thị kiểu lây lan hay truyền miệng. Vì vậy, trong lúc xem xét các mảnh khác nhau của Facebook và những gì mà các nền tảng này cho phép bạn làm, bạn hãy nhìn qua lăng kính như thế này: làm thế nào để tạo một ứng dụng để thúc đẩy nhiều tương tác của người sử dụng và sử dụng các điểm tích hợp của Facebook để mở rộng cơ sở người dùng của bạn và khuyến khích những người sử dụng tương tác với ứng dụng của bạn bất cứ khi nào có thể.
Giải phẫu một ứng dụng Facebook
Facebook cung cấp cho ứng dụng của bạn nhiều điểm tích hợp vào trong môi trường của người sử dụng Facebook: hai vùng quan trọng nhất được gọi là trang vải nền (canvas) và hộp khái lược của ứng dụng và một số điểm tích hợp phụ.
Trang vải nền
Bạn đến xem một trang vải nền của ứng dụng thông qua các điểm phụ trợ nổi bật nhất và dễ thấy nhất, đó là Dẫn hướng bên trái (Left Nav) -- một liên kết trong thanh dẫn hướng bên trái của Facebook, ở đó lên khung tất cả các trang khác trong Facebook và liệt kê tất cả các ứng dụng đã cài đặt của người sử dụng hiện tại (trừ khi người sử dụng quyết định không làm điều này khi cài đặt một ứng dụng). Ví dụ, bạn có thể nhấn vào liên kết Left Nav của ứng dụng Photos (Các bức ảnh) (xem Hình 8).

Hình 8. Liên kết Left Nav
Liên kết Left Nav
Thao tác này sẽ mang tới trang vải nền của ứng dụng Photos, hiển thị một bản tóm tắt về các cập nhật gần đây nhất của các bạn bè của bạn đối với các album ảnh của họ, mà họ đã tạo ra bằng cách sử dụng ứng dụng Photos (xem Hình 9).

Hình 9. Trang vải nền của Photos
Trang vải nền của Photos
Tại đây bạn có thể nhấn vào một trong những album ảnh của các bạn bè của bạn và xem nó, vẫn ở trong trang vải nền Photos (xem Hình 10).

Hình 10. Xem một album cụ thể trong trang vải nền Photos
Xem một album cụ thể trong trang vải nền Photos
Hộp khái lược
Hộp khái lược của ứng dụng là một công cụ trên trang khái lược của người sử dụng, thường hiển thị một số loại thông tin tóm tắt về hoạt động của người sử dụng bên trong ứng dụng. Trong trường hợp của ứng dụng Photos, bạn có thể nhìn thấy một số album ảnh mới nhất của người sử dụng (xem Hình 11).

Hình 11. Hộp khái lược của ứng dụng Photos
Hộp khái lược của ứng dụng Photos
Các liên kết hành động khái lược
Các liên kết hành động khái lược là các liên kết mà một ứng dụng có thể đăng lên trong khái lược của người dùng và chúng hiển thị trực tiếp ngay phía dưới ảnh của người dùng. Hành động khái lược của bạn có thể nói hay làm các việc khác nhau tùy thuộc vào việc người sử dụng ứng dụng hoặc một khách viếng thăm có đang xem khái lược vào lúc đó hay không.
Ví dụ, đây là ứng dụng Photos đã đăng một liên kết hành động Mời xem các ảnh của tôi (View Photos of Me) trong khái lược của tôi (xem Hình 12).

Hình 12. Liên kết hành động khái lược của ứng dụng Photos
Liên kết hành động khái lược của ứng dụng Photos
Nhấn chuột vào nó sẽ đưa bạn đến trang vải nền của ứng dụng, hiển thị các ảnh của tôi (xem Hình 13).

Hình 13. Kết quả nhấn chuột vào liên kết hành động khái lược của ứng dụng Photos
Kết quả nhấn chuột vào liên kết hành động khái lược của ứng dụng Photos
Các yêu cầu
Trang vải nền của ứng dụng và hộp khái lược cho phép những người sử dụng tự thể hiện về mình, nhưng các ứng dụng cũng cho phép những người sử dụng giao tiếp với nhau (và thúc đẩy ứng dụng phát triển), thông thường là qua các yêu cầu (Requests). Một người sử dụng có thể đưa ra một yêu cầu với một người dùng khác trong bối cảnh của một ứng dụng, ví dụ như yêu cầu một người bạn xác nhận đồng ý làm bạn trong ứng dụng Friends hoặc mời một người bạn tham gia một sự kiện trong ứng dụng Events. Các yêu cầu chờ giải quyết của người sử dụng xuất hiện trong hộp phía trên bên phải của trang chủ của họ (xem Hình 14).

Hình 14. Tóm tắt yêu cầu đang chờ giải quyết trên trang chủ
Tóm tắt yêu cầu đang chờ giải quyết trên trang chủ
Người sử dụng có thể xem danh sách đầy đủ về các yêu cầu đang chờ giải quyết bằng cách nhấn chuột vào bất kỳ các yêu cầu nào được hiển thị (xem Hình 15).

Hình 15. Trang các yêu cầu (Requests) của người sử dụng
Trang các yêu cầu (Requests) của người sử dụng
Các yêu cầu thường là các lời mời thêm vào chính ứng dụng đó hoặc có thể yêu cầu người sử dụng thêm ứng dụng trên con đường đáp ứng yêu cầu và là một mảng trong tiếp thị bằng truyền miệng của các ứng dụng Facebook (xem Hình 16).

Hình 16. Yêu cầu thêm ứng dụng
Yêu cầu thêm ứng dụng
Các ứng dụng đòi hỏi sự tương tác của người sử dụng, chẳng hạn một trò chơi, có thể sử dụng Requests để cho phép những người dùng chơi với nhau. Ví dụ cơ bản và thường xuyên nhất về điều này là Yêu cầu kết bạn (Friend Request), trong đó những người sử dụng nhận biết các bạn bè của họ trên Facebook và yêu cầu xác nhận đồng ý kết bạn, tiếp tục kết nối liên hoàn đồ thị xã hội và cho phép hoạt động tương tác của người dùng với tất cả các ứng dụng khác.
Trong khi Requests cho phép những người sử dụng mời nhau một cách rõ ràng tương tác với nhau bên trong một ứng dụng (và thường xuyên họ sẽ thêm ứng dụng trong khi làm điều đó), Nguồn cung cấp tin tức (News Feed), Nguồn cấp tin mini (Mini Feed), Các tin nhắn đính kèm (Message Attachments), thư điện tử (Email) và Các thông báo (Notifications) đều ngầm làm như vậy và giúp cho duy trì ứng dụng của bạn trong tâm trí người dùng và thúc đẩy việc sử dụng nó. 
Nguồn cung cấp tin tức là một ứng dụng xuất hiện trên trang chủ của người dùng, để hiển thị các mục tin tức được các ứng dụng của người dùng và bạn bè của người dùng đăng lên, thường là để đáp lại một số hoạt động của người sử dụng trong ứng dụng (xem Hình 17).

Hình 17. Nguồn cung cấp Tin tức
Nguồn cung cấp Tin tức
Các ứng dụng thường xuyên thông báo các mục nguồn cung cấp tin tức để trả lời một yêu cầu được chấp nhận, ví dụ một người sử dụng chấp nhận một yêu cầu "xác nhận đồng ý kết bạn" từ ứng dụng Friends (xem Hình 18).

Hình 18. Mục xác nhận đồng ý kết bạn trong nguồn cung cấp tin tức
Mục xác nhận đồng ý kết bạn trong nguồn cung cấp tin tức
Nguồn cung cấp tin tức về cơ bản là một blog công cộng về các tương tác của người sử dụng trong các ứng dụng của họ và thúc đẩy một bầu không khí thích thú và vui chơi qua mạng bạn bè. Nó lôi kéo bạn bè tham gia vào trò vui chơi và qua đó tương tác với các ứng dụng và tự cài đặt chúng.
Nguồn cấp tin mini là một nguồn cung cấp tin tức tương tự trong một khái lược của người dùng, nhưng chỉ hiển thị các hoạt động từ các ứng dụng của người sử dụng đó về người sử dụng đó, và không có gì khác về bạn bè của họ. Như vậy, người sử dụng cũng có thể xoá các mục khỏi nó. Các ứng dụng có thể đăng các mục lên nguồn cấp tin mini của người sử dụng cụ thể hay lên cả nguồn cấp tin mini lẫn nguồn cung cấp tin tức (xem Hình 19).

Hình 19. Nguồn cấp tin mini
Nguồn cấp tin mini'
Các tin nhắn đính kèm
Các tin nhắn đính kèm (Message attachments) cho phép người dùng dễ dàng chia sẻ nội dung ứng dụng của họ với bạn bè của mình. Các ứng dụng có một mẩu ngắn FBML cố định được bao gồm trong một hộp thả xuống các tin nhắn đính kèm của người sử dụng khi gửi một tin nhắn tới hộp thư (Inbox) Facebook của một người dùng khác (xem Hình 20).

Hình 20. Tin nhắn đính kèm trong tin nhắn
Tin nhắn đính kèm trong tin nhắn
Một người sử dụng cũng có thể bao gồm tin nhắn đính kèm của ứng dụng của bạn khi gửi một lời nhắn (note) lên bức tường (Wall) của một người dùng khác; Wall là một ứng dụng trên trang khái lược của người dùng (xem Hình 20).

Hình 21. Đăng tin nhắn đính kèm lên Wall
Đăng tin nhắn đính kèm lên Wall
Các thông báo và e-mail
Các ứng dụng có thể gửi các thông báo cho những người sử dụng và các thông báo này sẽ xuất hiện trên trang các thông báo của người sử dụng (xem Hình 22).

Hình 22. Trang các thông báo
Trang các thông báo
Đây là các mục một dòng chỉ người sử dụng đang nhận các thông báo có thể nhìn thấy và nó tách biệt với câu chuyện về nguồn cung cấp tin tức và nguồn cấp tin mini.
Đối với các thông báo không công khai, có nghĩa là các giao tiếp riêng tư từ một ứng dụng trực tiếp đến một người sử dụng, một ứng dụng có thể gửi e-mail đến những người cùng sử dụng ứng dụng hoặc bạn bè của người sử dụng. Các e-mail này sẽ được gửi đến tài khoản email bên ngoài của người sử dụng (không phải tài khoản Facebook của họ) nếu họ đã có thiết lập đó.
Các e-mail của một ứng dụng, các hành động Nguồn cung cấp Tin tức, Các thông báo và các đính kèm tin nhắn/đính kèm lên tường (Wall attachments) hoạt động để lôi kéo người dùng vào tương tác với các ứng dụng, kích hoạt thêm nhiều sự kiện như vậy và do đó hỗ trợ sự lây lan kiểu virus của một ứng dụng trong mạng Facebook.
Danh mục sản phẩm
Các điểm tích hợp truyền miệng ấy thúc đẩy ứng dụng và duy trì nó sống động trong tâm trí của những người sử dụng, nhưng những người sử dụng cũng có thể chủ động tìm các ứng dụng để tự thêm vào, thông qua hộp Tìm kiếm (Search) ở góc trên bên trái của mọi màn hình (xem Hình 23).

Hình 23. Tìm kiếm các ứng dụng
Tìm kiếm các ứng dụng
Những người sử dụng cũng có thể duyệt qua các ứng dụng bằng cách nhấn vào liên kết Applications (các ứng dụng), luôn luôn nhìn thấy ngay bên dưới hộp tìm kiếm ở cột dẫn hướng bên trái (xem Hình 24).

Hình 24. Liên kết ứng dụng
Liên kết ứng dụng
Nhấn vào liên kết Applications để mở trang vải nền của ứng dụng Applications (xem Hình 25).

Hình 25. Trang vải nền của ứng dụng Applications
Trang vải nền của ứng dụng Applications
Bạn có thể quản lý các ứng dụng hiện tại được cài đặt của bạn và duyệt tìm những ứng dụng mới để thêm vào. Nhấn vào Browse more applications để mở điểm tích hợp khác cho ứng dụng của bạn, đó là Danh mục sản phẩm (Product Directory) (xem hình 25).

Hình 26. Danh mục sản phẩm
Danh mục sản phẩm
Ứng dụng của bạn đua tranh với các ứng dụng khác để được chú ý. Sẽ rất có ích khi lưu ý tới ba trong số bốn phiếu nằm dọc theo phía trên đỉnh của danh mục sản phẩm. Ba mục đầu tiên, Phổ biến gần đây nhất (Recently Popular), Hoạt động nhiều nhất (Most Activity)Những người dùng tích cực nhất (Most Active Users) là các chức năng đo xem ứng dụng đã phổ biến đến mức độ nào, có nghĩa là các thiết bị tiếp thị bằng bằng lời nói (Các yêu cầu, Nguồn cung cấp tin tức, email và đính kèm tin nhắn/đính kèm lên tường) và việc tạo ra một ứng dụng để thúc đẩy tương tác của người sử dụng là quan trọng tột bực đối với khả năng lan rộng của nó, ngay cả khi những người sử dụng chủ động rõ ràng tìm kiếm các ứng dụng trong danh mục sản phẩm. Người sử dụng ứng dụng đầu tiên có thể tìm thấy nó trên phiếu Newest (Mới nhất), nơi bạn nhìn thấy các ứng dụng được xuất bản gần đây nhất. Từ đây, việc tự thúc đẩy để trở thành một điểm nhấn trên đồ thị xã hội là của chính bản thân ứng dụng.
Trang thông tin về ứng dụng (About)
Nếu một ứng dụng trong danh mục sản phẩm được người dùng nhìn thấy, khi nhấn chuột vào liên kết của nó trong danh mục sản phẩm sẽ đưa họ đến trang About của ứng dụng (xem Hình 27), tại đây người dùng có thể tìm hiểu thêm về ứng dụng và hy vọng rằng họ sẽ thêm ứng dụng hoặc vào khái lược của họ hoặc vào một trang khác trên Facebook.

Hình 27. Một trang About của ứng dụng
Một trang About của ứng dụng
Thiết lập tính riêng tư (Privacy Settings)
Cuối cùng, những người dùng có thể hạn chế các điểm tích hợp ứng dụng trong môi trường của họ thông qua ứng dụng Applications, trong đó liệt kê tất cả các chương trình ứng dụng đã cài đặt của bạn, cho phép bạn loại bỏ chúng hoặc chỉnh sửa từng giá trị cài đặt của chúng. Nhấn vào Edit Settings bên cạnh một ứng dụng để mở cửa sổ các giá trị thiết lập tính riêng tư tiêu chuẩn được áp dụng cho bất kỳ ứng dụng nào (xem Hình 28).

Hình 28. Hộp thoại các giá trị thiết lập tính riêng tư tiêu chuẩn
Hộp thoại các giá trị thiết lập tính riêng tư
Sau đây là mô tả chi tiết các giá trị thiết lập tính riêng tư:
  • Ai có thể nhìn thấy cái này (Who can see this): Cho phép người sử dụng chỉ rõ những người có thể nhìn thấy bản cài đặt ứng dụng Photos của họ. Tùy chọn là:
    • Mạng của tôi và bạn bè: Bất kỳ ai ở trong bất kỳ một trong các mạng của người sử dụng (như New York, NY) và tất cả bạn bè của người sử dụng.
    • Các bạn bè của các bạn bè.
    • Chỉ các bạn bè.
    • Không ai cả
    • Tùy chỉnh: xuất hiện một cửa sổ cho phép người sử dụng tùy chỉnh các mạng cụ thể nào có thể xem chương trình ứng dụng và các bạn bè cụ thể nào của người dùng này không thể xem chương trình ứng dụng.
  • Hiển thị cái này trong trình đơn bên trái của tôi (Show this in my left-hand menu): Chỉ rõ xem ứng dụng này có nhận được một liên kết dẫn hướng bên trái (Left Nav) trong danh sách các ứng dụng đã cài đặt của người sử dụng không (trong cột dẫn hướng bên trái của người sử dụng).
  • Xuất bản các sự việc này lên Nguồn cung cấp tin tức của tôi (Publish stories about this in my News Feed): Chỉ rõ xem ứng dụng này có thể đăng các mục lên Nguồn cung cấp Tin tức của người sử dụng không (trên trang chủ của người sử dụng).
  • Xuất bản các sự việc này lên Nguồn cấp tin mini của tôi (Publish stories about this in my Mini-Feed): Chỉ rõ xem ứng dụng này có thể đăng các mục trong Nguồn cấp tin mini của người sử dụng không (trên trang khái lược).
  • Thêm một liên kết bên dưới hình ảnh khái lược vào bất kỳ khái lược nào (Add a link below the profile picture to any profile): Chỉ rõ xem ứng dụng này có thể đăng các liên kết hành động khái lược không.
  • Cho phép ứng dụng này liên lạc với tôi qua email (Allow this application to contact me via email): Chỉ rõ xem ứng dụng của bạn có thể gửi email cho người sử dụng. Lưu ý rằng mục này tham chiếu đến tài khoản email bên ngoài của người sử dụng; ứng dụng của bạn không thể gửi email đến một hộp thư Facebook của người sử dụng.
Sau khi thiết lập tính riêng tư tiêu chuẩn, một ứng dụng cũng có thể cung cấp một cửa sổ cấu hình tùy chỉnh riêng của nó, có thể truy cập qua liên kết Các thiết lập tính riêng tư khác (Other Privacy Settings) trong cửa sổ thiết lập tính riêng tư tiêu chuẩn (xem Hình 29).

Hình 29. Liên kết các thiết lập tính riêng tư khác trong hộp thoại thiết lập tính riêng tư tiêu chuẩn
Liên kết các thiết lập tính riêng tư khác trong hộp thoại thiết lập tính riêng tư tiêu chuẩn
Bây giờ bạn đã xem xét lại những điểm tích hợp có sẵn cho ứng dụng của bạn, hãy xem xét làm thế nào để tạo ra nội dung của ứng dụng của bạn cho những điểm tích hợp khác nhau này.
FBML
Bạn cần phải biểu hiện (render) nội dung mà Facebook có thể đã nhúng vào các trang web của nó, nhưng bạn không thể sử dụng trực tiếp mã HTML và mã Javascript như bạn sẽ làm trên trang web của riêng bạn. Facebook cần đảm bảo chắc chắn rằng nội dung không chứa bất kỳ mã Javascript độc hại nào, chẳng hạn như bất kỳ mục nào có thể làm hỏng trang Facebook chứa nó và cũng muốn làm cho càng dễ dàng càng tốt đối với các ứng dụng của bạn khi đưa các thông tin từ môi trường Facebook vào trong nội dung được biểu hiện.
Câu trả lời của Facebook cho các vấn đề này là Ngôn ngữ đánh dấu FaceBook (FBML-Facebook Markup Language), một ngôn ngữ XML mà Facebook dịch sang mã HTML khi biểu hiện nội dung ứng dụng của bạn để cung cấp cho nội dung của bạn có quyền truy cập vào môi trường dữ liệu xung quanh giống như Facebook biểu hiện FBML trên các máy chủ của nó. Bạn có thể suy nghĩ về Facebook như là một bộ tiền xử lý văn bản, giống như XSLT hay PHP. Nó nhận nội dung FBML và dịch sang HTML, thay thế dữ liệu về người sử dụng hoặc môi trường vào nhiều thẻ đặc thù Facebook khác nhau. Để thay thế các chức năng Javascript bị mất, Facebook cung cấp ngôn ngữ FBJS (Facebook JavaScript). Để đơn giản hóa các truy vấn phức tạp vào cơ sở dữ liệu của Facebook và giảm số lần gọi cần thực hiện tới các máy chủ của Facebook, Facebook cung cấp Ngôn ngữ truy vấn Facebook (FQL-Facebook Query Language), một biến thể của SQL. Hình 30 minh họa luồng chảy thông tin từ máy chủ ứng dụng của bạn đến trình duyệt của người sử dụng.

Hình 30. Dòng chảy thông tin từ máy chủ ứng dụng đến trình duyệt của người sử dụng
Dòng chảy thông tin
Hầu hết các thẻ FBML giống hệt với các thẻ HTML và dẫn đến nội dung trình duyệt giống nhau khi phân tích cú pháp, nhưng FBML cũng cung cấp nhiều thẻ hành vi và các thẻ trích ra thông tin từ các cơ sở dữ liệu Facebook và đưa nó vào trong nội dung của bạn. Bạn sẽ nghiên cứu sâu hơn về vấn đề này trong phần 2.
Còn đối với FBJS (Facebook Javascript), đây chỉ là Javascript với một số sửa đổi. Facebook phân tích cú pháp mã Javascript trông như bình thường của bạn và thực hiện thay đổi trước khi chuyển nó đến trình duyệt. Nó cũng sửa đổi DOM một chút, đặt các hạn chế về cách bạn có thể truy cập và sửa đổi các phần tử. Bạn sẽ xem xét về các thay đổi này kỹ hơn trong phần 2.
Facebook cũng cung cấp sự hỗ trợ AJAX mạnh mẽ thông qua một đối tượng AJAX. Tất cả các yêu cầu của AJAX được ủy quyền qua các máy chủ của Facebook để mang lại cho bạn khả năng trả về mã FBML như là kết quả của một yêu cầu AJAX. Facebook xử lý mã FBML như nó thực hiện với bất kỹ mã nào khác, chèn trực tiếp dữ liệu của Facebook vào chỗ các thẻ đặc thù Facebook ví dụ như <fb:name> và lời gọi AJAX của bạn được trả về một đối tượng mà nó có thể đặt như là "FBML bên trong" của một phần DOM thông qua hàm setInnerFBML() của phần tử đó. Facebook không hỗ trợ các thuộc tính innerHTML vì lý do bảo mật, trừ một hàm setInnerXHTML() đang ở bản beta khi tôi viết bài này.
Giao tiếp giữa Máy chủ ứng dụng WebSphere và các máy chủ của Facebook
Ứng dụng của chúng ta, chạy trong WebSphere, phải giao tiếp với Facebook và Facebook phải giao tiếp với ứng dụng của bạn. Giao tiếp của Facebook với kịch bản lệnh PHP của bạn bị hạn chế, chỉ được thông qua các yêu cầu trang vải nền (Canvas Page), nơi mà người dùng đang thực hiện một số hành động trong ứng dụng của bạn. Khi người sử dụng đi tới URL của trang vải nền của ứng dụng của bạn, ví dụ như http://www.facebook.com/JakeTestApp, Facebook ủy quyền yêu cầu này cho URL của máy chủ từ xa của bạn, ví dụ như http://myserver.url/FacebookTestApp/index.php, và index.php của bạn trả về FBML cho Facebook để biểu hiện. Tương tự như vậy, mã FBJS của bạn thực hiện một yêu cầu AJAX, sẽ đi qua quá trình ủy quyền giống như thế, và gọi máy chủ của bạn để đáp lại. Ứng dụng của bạn cũng cần phải giao tiếp với Facebook, hoặc kéo hoặc đẩy các thông tin trong một yêu cầu. Nó thực hiện như vậy qua giao diện REST của Facebook, một giao diện HTTP mà trưng ra một API của các hàm dưới dạng các URL mà bạn có thể gọi với các tham số yêu cầu khác nhau đặc thù cho hàm đó và trả về XML hoặc JSON. May mắn thay, bạn không cần phải lo lắng về các chi tiết của các lời gọi HTTP này hoặc dữ liệu trả về vì Facebook cung cấp các thư viện khách của PHP, Java và Javascript – các trình bao bọc (wrapper) xung quanh giao diện REST để xử lý việc xây dựng các yêu cầu HTTP và việc sắp xếp theo thứ tự (marshalling) dữ liệu trả về thành các đối tượng có thể dùng được trong ngôn ngữ của thư viện khách.
Sử dụng thư viện khách
Thư viện khách cung cấp một đối tượng API khách của Facebook, một đối tượng ủy quyền để chuyển lời gọi phương thức của chúng ta thành các yêu cầu đến các máy chủ của Facebook. Ví dụ, để có được những bạn bè của người sử dụng hiện tại, bạn chỉ cần gọi một hàm trên đối tượng Facebook (xem Liệt kê 1).

Liệt kê 1. Obtaining the current user's friends via the PHP client library
                    
$friends = $facebook->friends_get();

Chúng ta cũng có thể đẩy thông tin tới Facebook (thực hiện cập nhật dữ liệu). Ví dụ, hộp khái lược hoạt động khác với trang vải nền (xem Hộp khái lược-The Profile Box và Trang vải nền-The canvas page). Thay vì phải chờ đợi Facebook truy vấn máy chủ của bạn để tìm các nội dung của một hộp khái lược của người sử dụng, bạn phải đẩy nội dung đó một cách rõ ràng mỗi khi bạn muốn thay đổi nó. Facebook sau đó lưu trữ nội dung của hộp khái lược vào các máy chủ của nó. Điều này có nhiều ý nghĩa vì nếu nội dung của hộp khái lược này không được lưu trữ trên Facebook, Facebook sẽ phải hỏi máy chủ của bạn mỗi khi có bất kỳ ai xem khái lược của một người sử dụng có chứa ứng dụng của bạn và những người sử dụng mất nhiều thời gian của họ trên Facebook để xem từng khái lược của người khác và vì vậy phải nạp các hộp khái lược của tất cả các ứng dụng được cài đặt trên chúng. Đối với một ứng dụng phổ biến điều này sẽ chất lên trên máy chủ một gánh nặng công việc khổng lồ và cũng sẽ gây ra thời gian chậm trễ khi nạp các trang khái lược. Để thay đổi nội dung của hộp khái lược của ứng dụng của bạn trên một khái lược người dùng, bạn chỉ cần gọi một phương thức trên đối tượng $facebook được thư viện khách PHP cung cấp (xem Liệt kê 2).

Liệt kê 2. Setting the content of your application's profile box on the current user's profile page.
                    
$facebook->profile_setFBML ('New profile box content', $user);

Mỗi một lời gọi phương thức này gửi một yêu cầu rõ ràng cho Facebook. Do ứng dụng của bạn sẽ ngày càng phức tạp hơn, nên mã PHP của bạn phải truy vấn Facebook để tìm ngày càng nhiều dữ liệu phức tạp hơn và dữ liệu phụ thuộc vào các kết quả của các lời gọi hàm trước đó. Ví dụ, bạn có thể muốn tìm nạp các tên của tất cả mọi người được gắn thẻ đánh dấu trong ứng dụng Photos của người sử dụng hiện tại, điều này sẽ đòi hỏi rằng đầu tiên bạn gọi Facebook để tìm tất cả các album của người sử dụng, sau đó để tìm tất cả các ảnh trong các album đó, rồi tìm tất cả các thẻ photo của các ảnh đó, sau đó tìm những người sử dụng của các thẻ photo đó -- rất nhiều công việc, rất nhiều yêu cầu tới các máy chủ của Facebook và rất nhiều mã PHP.
FQL
Thay vào đó, bạn có thể sử dụng chỉ một truy vấn FQL (Ngôn ngữ truy vấn Facebook - Facebook Query Language), một biến thể của SQL được Facebook tạo ra để truy vấn trực tiếp cơ sở dữ liệu và dữ liệu ứng dụng lõi của nó. Nói ngắn gọn, FQL chỉ cho phép mệnh đề from truy vấn một bảng, nhưng cho phép có các truy vấn phụ trong các mệnh đề select và mệnh đề where, do đó truy vấn FQL sau đây sẽ tìm về cùng những thông tin như đã mô tả ở trên (các tên của những người sử dụng có ảnh), nhưng chỉ bằng một yêu cầu, ngắn gọn hơn và với mã dễ đọc hơn và viết thích hơn (xem Liệt kê 3).

Liệt kê 3. Ví dụ về FQL - lựa chọn các tên của tất cả những người dùng có ảnh trong trang các ảnh (photos) của người sử dụng
                    
select first_name from user 
where uid in 
(select subject from photo_tag where pid in
    (select pid from photo where aid in
        (select aid from album where owner = 563830447)))

Trong Liệt kê 3, 563830447 là số mã nhận dạng Facebook của tác giả. Yêu cầu FQL này trả về XML có chứa tên của thẻ ảnh duy nhất được tìm thấy trong số các bức ảnh của tác giả và là một ví dụ về đáp ứng REST của Facebook (xem Liệt kê 4).

Liệt kê 4. Đáp ứng cho truy vấn FQL
                    
<?xml version="1.0" encoding="UTF-8"?>
<fql_query_response xmlns="http://api.facebook.com/1.0/" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" list="true">
<user>
            <first_name>Jake</first_name>
      </user>
</fql_query_response>

Bạn có thể xác minh được điều này và thử nghiệm bằng các đoạn FBML, khi sử dụng bàn thử nghiệm của nhà phát triển của Facebook, được tìm thấy tại http://developers.facebook.com/tools.php?api (xem hình 31).

Hình 31. Bàn thử nghiệm API của Facebook
Bàn thử nghiệm API của Facebook
Sử dụng các thư viện khách của FBML, FBJS, FQL và Facebook, bạn có thể phát triển một ứng dụng được tích hợp tốt vào trong môi trường và cung cấp các chức năng mạnh mẽ. Bây giờ bạn đã sẵn sàng để tạo ứng dụng của bạn.
Bookmark and Share

0 comments:

Post a Comment

Next previous home

Cộng đồng yêu thiết kế Việt Nam Thiet ke website, danang