Facebook là một bước tiến lớn của mạng xã hội, ban đầu được Zuckerberg lập trình để tạo ra một mạng kết nối hấp dẫn cho bạn bè, sản phẩm này được sử dụng nội bộ cho sinh viên ĐH harvard
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN VĂN LỄ
ĐỀ TÀI PHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK
TRÊN CƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hải Phòng – 2012
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN VĂN LỄ
ĐỀ TÀI PHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK
TRÊN CƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Ngành : Công nghệ thông tin
Chuyên ngành : Hệ thống thông tin
Mã số : 60 48 05
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN HẢI CHÂU
Hải Phòng – 2012
Trang 3ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN VĂN LỄ
ĐỀ TÀI PHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK
TRÊN CƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hải Phòng – 2012
Trang 4ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN VĂN LỄ
ĐỀ TÀI PHÁT TRIỂN ỨNG DỤNG KẾT NỐI FACEBOOK
TRÊN CƠ SỞ GIAO THỨC OAUTH (OPEN AUTHENTICATION)
Ngành : Công nghệ thông tin
Chuyên ngành : Hệ thống thông tin
Mã số : 60 48 05
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN HẢI CHÂU
Hải Phòng – 2012
Trang 51.1.1 Lịch sử phát triển của mạng xã hội 8
1.1.2 Tình hình phát triển của mạng xã hội trên thế giới 10
1.1.3 Các thể loại mạng xã hội phổ biến 10
1.2.4 Các dạng ứng dụng trên Facebook hiện nay 16
1.2.5 Điểm mạnh và yếu của mạng Facebook 17
CHƯƠNG 3 Xây dựng ứng dụng kết nối Facebook (OAuth.F.B.) 28
Trang 63.2.5 Ngôn ngữ đánh dấu Facebook - FBML 36
3.3.4 Sơ đồ hoạt động của ứng dụng OAuth.F.B 56
Trang 7Danh mục các ký hiệu và chữ viết tắt
OAuth Open Authentication
OA Open Authentication
WebApp Web Application
CSDL Cơ sở dữ liệu
OAuth.F.B OAuth FaceBook
FBML Facebook Markup Language
FQL Facebook Query Language
LAMP Linux+Apache+MySql+PHP
CAS Central Authentication Service
SAML Secure Assertion Markup Language
WebSSO Web Single Sign On
Trang 8Danh mục các hình vẽ, đồ thị
Trang
Hình 1.5: Mô hình web Facebook sử dụng cache 15
Hình 1.6: Cách thức làm việc của Facebook 15
Hình 2.1: Mô hình quá trình xác thực người dùng 20
Hình 2.2: Hệ thống xác thực người dùng của Gmail và Yahoo 21
Hình 3.1: Cách thức làm việc của Facebook API 29
Hình 3.2: Dòng chảy thông tin từ máy chủ ứng dụng đến trình duyệt của người dùng37
Hình 3.4: Sơ đồ đăng ký sử dụng OAuth.F.B 56
Hình 3.5: Sơ đồ xác nhận đăng ký sử dụng OAuth.F.B 57
Hình 3.6: Sơ đồ chi tiết hoạt động của OAuth.F.B 57
Hình 3.7: Trang nền của ứng dụng OAuth Facebook 66
Hình 3.8: Trang yêu cầu đăng ký sử dụng dịch vụ OAuth Facebook 67
Hình 3.9: Cập nhật điện thoại để đăng ký sử dụng dịch vụ thành công 67
Hình 3.10: Xác nhận số điện thoại thành công 68
Hình 3.12: Demo sử dụng chức năngOAuth FaceBook 69
Hình 3.13: Demo đọc tin mới, sử dụng OAuth.F.B trên SSH 70
Hình 3.14: Tích hợp OAuth.F.B lên website bán hàng 71
Trang 9MỞ ĐẦU
Ngày nay, công nghệ thông tin phát triển, các mạng xã hội phát triển, việc trao đổi thông tin trên mạng xã hội trở lên phổ biến Bài toán đặt ra là cần có hệ thống có thể cập nhật thông tin từ một hệ thống bán hàng, hay từ một hệ thống quản lý nội dùng nào đó gửi nên mạng xã hội nhanh chóng Hệ thống phải có thể dễ dàng tích hợp trên nhiều website khác nhau
Luận văn gồm các nội dụng như sau:
Mở đầu: Giới thiệu về đề tài luận văn, ý nghĩa và tính khả thi của đề tài
Chương 1. Mạng xã hội Facebook và cách phát triển ứng dụng Facebook: Trình bày về mạng xã hội Facebook và các mạng xã hội phổ biến hiện này
Chương 2. Xác thực và xác thực bằng OAuth: Trình bày về vấn đề xác thực trong mạng xã hội và trình bày về xác thực mở Open Authentication
Chương 3. Xây dựng ứng dụng trên Facebook: Trình bày các vấn đề liên quan đến việc cài đặt và triển khai hệ thống Kết quả đạt được khi chạy thử hệ thống
Kết luận: Trình bày tóm tắt các kết quả đạt được Hướng mở rộng, phát triển
hệ thống
Trang 10CHƯƠNG 1 Mạng xã hội FaceBook
1.1 Tổng quan về mạng xã hội ảo
1.1.1 Lịch sử phát triển của mạng xã hội
Mạng xã hội xuất hiện lần đầu tiên năm 1995 với sự ra đời của trang Classmate với mục đích kết nối bạn học, tiếp theo là sự xuất hiện của SixDegrees vào năm 1997 với mục đích giao lưu kết bạn dựa theo sở thích
Năm 2002, Friendster trở thành một trào lưu mới tại Hoa Kỳ với hàng triệu thành viên ghi danh, tuy nhiên sự phát triển quá nhanh này cũng là con dao hai lưỡi: server của Friendster thường bị quá tải mỗi ngày, gây bất bình cho rất nhiều thành viên
Năm 2004, MySpace ra đời với các tính năng như phim ảnh (embedded video)
và nhanh chóng thu hút hàng chục ngàn thành viên mới mỗi ngày, các thành viên cũ của Friendster cũng lũ lượt chuyển qua MySpace và trong vòng một năm, MySpace trở thành mạng xã hội đầu tiên có nhiều lượt xem hơn cả Google và được tập đoàn News Corporation mua lại với giá 580 triệu USD
Năm 2006, sự ra đời của Facebook đánh dấu bước ngoặt mới cho hệ thống mạng xã hội trực tuyến với nền tảng lập trình "Facebook Platform" cho phép thành viên tạo ra những công cụ (apps) mới cho cá nhân mình cũng như các thành viên khác dùng Facebook Platform nhanh chóng gặt hái được thành công vược bực, mang lại hàng trăm tính năng mới cho Facebook và đóng góp không nhỏ cho con số trung bình
19 phút mà các thành viên bỏ ra trên trang này mỗi ngày
*) Cấu thành
Nút (node): Là một thực thể trong mạng Thực thể này có thể là một cá nhân,
một doanh nghiệp hoặc một tổ chức bất kỳ nào đó
Liên kết (tie): là mối quan hệ giữa các thực thể đó Trong mạng có thể có nhiều
kiểu liên kết Ở dạng đơn giản nhất, mạng xã hội là một đơn đồ thị vô hướng các mối liên kết phù hợp giữa các nút Ta có thể biểu diễn mạng liên kết này bằng một biểu đồ
mà các nút được biểu diễn bởi các điểm còn các liên kết được biểu diễn bởi các đoạn thẳng
Trang 11Hình 1.1: Sơ đồ mạng xã hội
Ví dụ lan truyền tin: Mạng có 1.000.000 thành viên liên thông, mỗi thành viên thuộc ít nhất 1 nhóm trung bình khoảng 100 cá thể Một bản tin A được đăng lên bởi thành viên nào đó, lần thứ nhất tin A lan truyền đến 100 thành viên trong nhóm
Lần thứ 2, mỗi thành viên lại lan truyền tiếp cho các thành viên thuộc nhóm khác, số thành viên biết A có thể là 100 x 100 = 10.000
Lần thứ 3, lại lan truyền như trên, số thành viên biết A có thể là 100 x 10.000 = 1.000.000
Như vậy chỉ sau 3 lần lan tin một triệu thành viên có thể biết tin A Tuy nhiên thời gian loan tin còn phụ thuộc vào việc các thành viên có online hay không? Nếu mọi người đều online thì tin A ngay lập tức tin được lan toàn mạng
Trang 121.1.2 Tình hình phát triển của mạng xã hội trên thế giới
MySpace: Phù hợp với mọi lứa tuổi, nhưng chủ yếu dành cho lứa tuổi thanh
thiếu niên, tuy nhiên một số ca sĩ cũng chọn nơi đây là nơi chia sẽ và lăng xê tên tuổi
Facebook: Phù hợp với mọi lứa tuổi, nhưng chủ yếu dành tầng lớp trí thức (bao
gồm sinh viên, các học sinh trung học và các công dân lớn tuổi khác)
Yahoo! 360: Phục vụ cho nhu cầu viết blog nhiều hơn là để giao lưu
Ngoài ra còn có: Flickr, Flixster, Fotolog, Friendster, Hi5, imeem, Orkut, PerfSpot, SS Free, Tagged.com, Windows Live Spaces
Mạng xã hội là món ăn tinh thần với người dân trên toàn thế giới, đặc biệt với các thanh thiếu niên Trước sự ảnh hưởng mạnh mẽ của mạng xã hội đối với các bạn trẻ, một nghiên cứu mang tên “Pew/Internet & American Life” đã ra đời, theo đó mối quan hệ giữa “teen” và mạng xã hội đã cho thấy những kết quả thú vị
Pew Internet & American Life là một dự án nghiên cứu về sự ảnh hưởng của mạng Internet đối với mọi mặt của cuộc sống người dân trên toàn thế giới như gia đình, giáo dục, sứ khỏe, chính trị…Nghiên cứu này được thực hiện bởi 4 nhà xã hội học người Mỹ là Amanda Lenhart, Mary Madden, Alexandra Rankin Macgill và Aaron Smith
1.1.3 Các thể loại mạng xã hội phổ biến
Ego centric Là mạng xã hội lấy cá nhân làm trung tâm Các hoạt động xã hội
sẽ xoay quanh bản thân mình, vì thế người ta gọi loại này là Ego centric Điển hình cho dạng này là MySpace, VietSpace và phần nào là Mash của Yahoo, Y360 cũng có một chút Đặc điểm là trang chủ càng dễ tùy biến càng tốt, càng nhiều thứ để trưng bày càng tốt, nhiều người lập trình Widget giúp mình trưng bày càng tốt Lựa chọn tốt là MySpace, Mash
Relationship centric Mạng xã hội loại này lấy mối quan hệ giữa cá nhân
người dùng và bạn bè làm trung tâm Nó giúp chúng ta biết được bạn mình đang làm
gì, nhóm bạn mình đang làm gì, cũng như giúp những người quan tâm tới ta biết ta đang làm gì Điển hình cho dạng này là FaceBook, Twitter, Y360, Mash Việt nam có một số mạng xã hội loại này đã ra mắt Đặc điểm của mạng này là mối quan hệ càng thật, càng thắt chặt càng tốt, các tính năng phải hỗ trợ tối đa các nhu cầu này
Content centric Đặc điểm chung của mạng loại này là nhằm trưng bày content
do mình hoặc nhóm của mình tạo ra cho bạn bè và công chúng (Bài viết, ảnh, audio/video, v.v )
Opera (phổ biến ở VN) , LiveSpace (phổ biến ở châu Âu), Y360 (phần My
Page) Loại này giúp dàn trang dễ dàng, có các tính năng cần thiết giúp chúng ta công khai mọi loại nội dung, một chút kết nối bạn bè và giao tiếp Có thể nói nó gần như phần My Page của Y360, nhưng linh hoạt hơn, tùy biến cao hơn
Ning, v.v Loại này thiên về nội dung nhóm, tạo điều kiện cho một nhóm cùng
công khai, chia sẻ nội dung Ý tưởng vậy, nhưng thực tế các mạng này rất yếu ớt
Trang 13YouTube, MetaCafe, Clipvn của Việt nam, flickers, Các nhóm này gọi là mạng xã hội có thể là không chính xác, có thể gọi nhóm này là hệ thống chia sẻ nội dung có tính năng mạng xã hội
Wordpress, Blogger, TypePad, Y360 blog, Opera Blog, Live Spaces Blog Nhóm này có thể gọi là mạng xã hội nhưng xếp nhóm này vào loại blogging platform thì chính xác hơn Nhưng nhiều người Việt nam thực chất đang sử dụng blog mà nghĩ
là đang sử dụng mạng xã hội
Các mạng kết hợp 3 dạng mạng trên chỉ là dạng cơ bản, còn rất nhiều loại mạng
xã hội khác là sự pha trộn giữa các loại này, cũng như nhắm các mạng chuyên biệt cho từng mảng nội dung, công nghệ,
1.1.4 Chọn mạng xã hội nào?
*) Yahoo 360 Không thể không nhắc tới Yahoo 360 vì đây là hệ thống thống
trị thị trường mạng xã hội Việt nam, đặc biệt là thống trị trên cả 3 phương diện: Ego, Relationship và content Tuy vậy trên thế giới Y360 lại gần như không có địa vị Lý do đơn giản, trên internet khi anh cố là mọi thứ anh sẽ không là ai Và trên từng phương diện Ego, Relationship hay content, Y360 lại rất yếu ớt, kém hẳn các nền tảng mạng xác hội khác Tuy vậy, đặc điểm thị trường Việt nam là người dùng chưa khó tính, cộng với nỗi lo ngại về mất độc giả, mất bạn bè nên Y360 vẫn còn vị trí Tuy vậy, xu hướng người dùng chuyển sang Wordpress, Blogger, Opera, Mash và FaceBook bắt đầu nhận thấy rõ
Yahoo rời bỏ Y360 là điều không thể tránh khỏi, nhưng có thể yên tâm rằng Yahoo đã đảm bảo cho tất cả người dùng chuyển đổi hoàn hảo, có trách nhiệm
*) Wordpress Đây là lựa chọn lý tưởng cho blogger chuyên nghiệp Những ai
đặt mối quan tâm hàng đầu vào nội dung viết cho độc giả diện rộng chứ không chỉ giới hạn cho gia đình, bạn bè Tự tin rằng nội dung của mình sẽ được mọi người theo dõi
mà không cần tới danh sách bạn bè (friendlist) trên Y360
Cần một nền tảng blogging tạo điều kiện cho việc viết, tương tác với độc giả, tương tác với blogger cùng mối quan tâm khác thông qua các tính năng tuyệt vời về: comment, tagging, trackback, blog roll, RSS, social media sharing, và hàng ngàn add-
on khác phục vụ content blogging
Tự hosting hoặc host miễn phí trên wordpress Khả năng xây dựng nhóm blogger liên quan cùng viết 5 xu cũng như một số người hay viết khác nên ngay lập tức vứt bỏ Y360 và chuyển sang hệ thống này
*) Opera, Live Space Những ai quan tâm nhiều tới viết cho gia đình, bè bạn,
nhật ký cá nhân, album ảnh - có thể cân nhắc việc chuyển sang Opera, LiveSpace Hai nền tảng này linh hoạt và dễ cấu hình hơn Y360 Tuy vậy việc chuyển đổi chưa hẳn là cần thiết, vì giá trị nhận được sẽ không lớn bằng việc đánh mất các quan hệ xã hội đang có Trừ trường hợp đa số bạn bè của mình đã chuyển sang Opera hoặc LiveSpace
Trang 14Nguyên tắc chung: Trừ trường hợp blogger chuyên nghiệp, nguyên tắc căn bản
của việc lựa chọn mạng xã hội là bạn ở đâu thì mình ở đấy Cũng không nên ngần ngại việc duy trì song song cùng một lúc 2 hệ thống mạng xã hội, cuối cùng thì tất cả mọi người sẽ chạy về nơi phù hợp với mình nhất, vì thế cũng nên thử các loại mạng xã hội trước khi chọn một loại phù hợp nhất cho riêng mình
Hình 1.2: Các mạng xã hội
*) Facebook là một dịch vụ mạng xã hội trực tuyến phổ biến, nó là một sáng
tạo độc đáo dành cho sinh viên và mở ra cho bất cứ ai có thư điện tử Facebook cho người dùng một khoảng không gian để tạo profile và kết nối với bạn bè Facebook có những tiện ích như chat, chia sẻ hình ảnh, liên kết, nhóm ưa thích, status messages và tin thời sự (feed)
Facebook là một bước tiến lớn của mạng xã hội, ban đầu được Zuckerberg lập trình để tạo ra một mạng kết nối hấp dẫn cho bạn bè, sản phẩm này được sử dụng nội
bộ cho sinh viên ĐH harvard và sau này nhân rộng ra khắp thế giới với hơn 49 triệu thành viên đang hoạt động Nó là một nền tảng phát triển giúp cho người sử dụng có thể tạo ra những ứng dụng của riêng mình Người dùng có thể thêm vào bất kì những ứng dụng nào mà họ muốn, sau đó tổng hợp và sắp xếp lại trong hồ sơ cá nhân
Trang 151.2 Mạng xã hội Facebook
1.2.1 Lịch sử phát triển
Facebook là một website mạng xã hội truy cập miễn phí do công ty Facebook Inc điều hành và sở hữu tư nhân Người dùng có thể tham gia các mạng lưới được tổ chức theo thành phố, nơi làm việc, trường học và khu vực để liên kết và giao tiếp với người khác Mọi người cũng có thể kết bạn và gửi tin nhắn cho họ, và cập nhật trang
hồ sơ cá nhân của mình để thông báo cho bạn bè biết về chúng
Tên của website nhắc tới những cuốn sổ lưu niệm dùng để ghi tên những thành viên của cộng đồng campus mà một số trường đại học và cao đẳng tại Mỹ đưa cho các sinh viên mới vào trường, phòng ban, và nhân viên để có thể làm quen với nhau tại khuôn viên trường
Facebook mở đầu là một phiên bản Hot or Not của đại học Harvard với tên gọi Facemash Mark Zuckerberg, khi đang học năm thứ hai tại Harvard, đã dựng nên Facemash vào ngày 28 tháng 10 năm 2003 Ngày 4 tháng 2 năm 2004, Zuckerman thành lập “The Facebook”, ban đầu đặt tại thefacebook.com Việc đăng ký thành viên ban đầu giới hạn trong những sinh viên của đại học Harvard, và trong vòng một tháng đầu tiên, hơn một nửa số sinh viên tại Harvard đã đăng ký dịch vụ này
Eduardo Saverin (lĩnh vực kinh doanh), Dustin Moskovitz (lập trình viên), Andrew McCollum (nghệ sĩ đồ họa), và Chris Hughes nhanh chóng tham gia cùng với Zuckerberg để giúp quảng bá website Vào tháng 3 năm 2004, Facebook mở rộng sang Stanford, Columbia, và Yale Việc mở rộng tiếp tục khi nó mở cửa cho tất cả các trường thuộc Ivy League và khu vực Boston, rồi nhanh chóng đến hầu hết đại học ở Canada và Hoa Kỳ
Tháng 6 năm 2004, Facebook chuyển cơ sở điều hành đến Palo Alto, California Công ty đã bỏ chữ The ra khỏi tên sau khi mua được tên miền facebook.com vào năm 2005
Tới tháng 9 năm 2005, Facebook ra mắt phiên bản trung, Zuckerberg gọi nó là một bước logic tiếp theo Vào thời gian đó, các mạng của trường trung học bắt buộc phải được mời mới được gia nhập Facebook sau đó mở rộng quyền đăng ký thành viên cho nhân viên của một vài công ty, trong đó có Apple Inc và Microsoft
Tiếp đó vào ngày 26 tháng 9 năm 2006, Facebook mở cửa cho mọi người trên
13 tuổi với một địa chỉ email hợp lệ Vào tháng 10 năm 2008, Facebook tuyên bố nó
đã thiết lập một trụ sở quốc tế tại Dublin, Ireland
Trang 161.2.2 Cơ chế hoạt động của Facebook
*) Mô hình ứng dụng web thông thường
Hình 1.3: Mô hình web thông thường
Ứng dụng và cơ sở dữ liệu được đặt trên một máy chủ Web Ứng dụng sẽ chạy trên server và người dùng thực thi ứng dụng bằng cách sử dụng giao thức HTTP thông qua trình duyệt Mô hình này sẽ làm việc hiệu quả nếu như server và client có 1 kết nối Internet ổn định
*) Mô hình ứng dụng web Facebook
Hình 1.4: Mô hình web Facebook
Người dùng truy cập Facebook.com và ứng dụng thông qua trình duyệt Internet Tuy nhiên ứng dụng không được đặt tại máy chủ của Facebook mà được lưu trên máy chủ của chính người tạo ra ứng dụng đó Facebook Platform cũng cung cấp một giao diện cho người viết ứng dụng
Với một máy chủ web bình thường trung bình chỉ chịu được từ 100 tới 500 truy vấn cùng một lúc Tuy nhiên với Facebook trung bình mỗi giây phải hiện 600 nghìn hình ảnh cùng một lúc Vấn đề đặt ra ở đây là làm thế nào để mỗi giây Facebook hiện được 600 ngàn hình ảnh ? Để giải quyết vấn đề này Facebook đã sử dụng vùng lưu trữ đệm (cache) và đây cũng chính là trái tim của hệ thống
Trang 17Hình 1.5: Mô hình web Facebook sử dụng cache
Facebook đã phát triển Haystack – một hệ thống quản lý các tập tin hình ảnh trung gian để cải tiến sự truy vấn Trước đây, Facebook đã sử dụng hệ thống 2 tầng: một tầng chuyên cho việc upload hình ảnh và lưu trữ vào server Tầng kia có nhiệm vụ tìm và lấy hình ảnh từ server để trả lời các truy vấn Tuy vậy việc xử lý theo cách cổ điển này là không phù hợp với nhu cầu tăng rất nhanh số lượng người dùng của Facebook dẫn tới tình trạng nghẽn mạch Input / Output Haystack sẽ quản lý và lưu trữ các hình ảnh trong vùng đệm và từđây sẽ trả lời các truy vấn hình ảnh Bên cạnh đó Facebook còn cải tiến các đoạn mã trên webserver để giảm thiểu kích thước tập tin và thời gian tính toán Ngôn ngữ lập trình cho từng bộ phận cũng dần được tối ưu hóa Người truy cập sẽ được phân luồng ngẫu nhiên vào các ngân hàng dữ liệu để giảm tải
và các truy vấn của họ sẽđược hệ thống cache trả lời nhanh chóng
1.2.3 Cách thức làm việc
Hình 1.6: Cách thức làm việc của Facebook
Trang 181) Trình duyệt của người dùng yêu cầu http://apps.facebook.com/myapp Địa chỉ này trỏ tới một cụm máy chủ trong trung tâm dữ liệu của Facebook Những server này sẽ phân tích các yêu cầu , xác định các ứng dụng tương ứng, sau đó tìm kiếm Url callback mà nhà phát triển ứng dụng cung cấp và thực hiện gọi tới Url đó
2) Máy chủ của Facebook sẽ gửi yêu cầu tới máy chủ của người tạo ứng dụng Yêu cầu này người dùng hoàn toàn không biết
3) Server chứa ứng dụng tạo một lời gọi API tới server của Facebook bằng cách
sử dụng FQL thông qua phương thức fql.query() của API hoặc trực tiếp bằng các hàm API
4) Máy chủ chứa ứng dụng sẽ trả về FBML tới máy chủ của Facebook Kết quả đạt được cuối cùng là 1 tài liệu FBML Tài liệu này sẽđược gửi trả lại server của Facebook để thực thi
5) Tài liệu FBML sẽ được chuyển sang dạng HTML và phục vụ cho người sử dụng Đây là bước cuối cùng trong quá trình thực thi và trả về kết quả cho trình duyệt
1.2.4 Các dạng ứng dụng trên Facebook hiện nay
Sự phát triển ngày càng lớn mạnh của Facebook đã kéo theo sự ra đời của rất nhiều các ứng dụng Theo thống kê hiện nay có khoảng 90.000 ứng dụng trên Facebook , với sự tham gia của 120 công ty
Theo thống kê năm 2008 ứng dụng trên Facebook được chia làm các loại:
Tiếp theo là các ứng dụng Café world, Facebook for Iphone, Texas HoldEm Poker,…
Trang 191.2.5 Điểm mạnh và yếu của mạng Facebook
*) Ưu điểm
- Là mạng phổ biến hiện nay
- Tính kết nối cao, chia sẻ cập nhật thông tin hàng ngày mà vẫn bảo vệ được quyền riêng tư
- Ứng dụng được thiết kế khoa học , thao tác nhanh gọn, hỗ trợ tiếng Việt tốt
- Dễ dàng lưu trữ và chia sẻ hình ảnh, video clip…
- Nhiều ứng dụng , game, quiz Người dùng cũng có thể tạo ra ứng dụng cho riêng mình
- Khả năng kết nối, giao lưu với các thành viên trên các lãnh thổ khác nhau
- Tính năng viết blog cho phép soạn thảo dễ dàng
*) Nhược điểm
- Người dùng không tùy chỉnh được template để có trang riêng cho mình
- Nếu là người mới dùng Facebook sẽ gặp khó khăn về thao tác
1.3 Ứng dụng trên Facebook
Facebook cung cấp cho người dùng nền tảng lập trình để có thể phát triển ứng dụng chạy trên mạng xã hội này Một số ứng dụng có thể được cài đặt ngay trong phạm vi Facebook, những ứng dụng khác lại dễ dàng cài đặt hơn nếu bắt đầu trên trang web của ứng dụng trước
Facebook có khoảng 1 tỷ người dùng và đã thu hút một số lượng lớn các nhà phát triển ứng dụng, trong đó có những ứng dụng thu hút được hàng chục triệu người dùng mỗi tháng và doanh thu đạt hàng chục triệu đô $, điển hình là một loạt game của hãng phát triển game nổi tiếng Zynga
Khi người dùng bắt đầu lập trang trên Facebook, sẽ có vài ứng dụng cơ bản của Facebook ở cột bên trái Những ứng dụng này do chính hãng Facebook cung cấp bao gồm Ảnh (Photos), Phim (Videos), Liên kết (Links), Sự kiện (Events) và Ghi chú (Notes) Bất cứ ứng dụng nào khác người dùng cài đặt thêm sẽ là ứng dụng của bên thứ ba, không phải Facebook tạo ra nó
Ứng dụng của Facebook cũng bao gồm các trò chơi như CityVille và Mafia Wars và một số các ứng dụng khác mà bạn có thể đã thấy như Give a Hug hoặc Birthday Calendar
Vì ứng dụng được phát triển bởi bên thứ ba, do đó không phải tất cả các ứng dụng đều hoạt động tốt và đều đáng tin cậy Người dùng có thể đã gặp phải một vấn đề trên Facebook như các ứng dụng thư rác, phá rối hay lừa đảo
Trang 20Xác thực là đặc biệt quan trọng để cho sự hoạt động của hệ thống được an toàn
Hệ thống luôn luôn trước tiên xác thực một thực thể khi nó cố thử thiết lập sự liên lạc Khi đó nét nhận dạng của thực thể được dùng để xác định sự truy nhập của nó như một đặc quyền hoặc để đạt được sự sẵn sàng phục vụ Suốt quá trình thực hiện giao thức xác thực, hai bên luôn luôn trao đổi bí mật chung, mà nó sẽ được dùng để đưa đến sự bảo mật và toàn vẹn
2.1.2 Vấn đề xác thực người dùng và tầm quan trọng của nó
Hệ thống xác thực người dùng đóng vai trò hết sức to lớn trong việc bảo mật thông tin của người dùng trong thời kì hiện đại hoá ngày nay Vậy nếu không có hệ thống xác thực người dùng thì làm sao giữ an toàn được những thông tin bí mật hoặc làm sao quản lý được các bí mật trong kinh doanh, thương mại và tài khoản ở ngân hàng hoặc những nguồn tài nguyên được chia sẻ ở trên mạng từ một máy chủ?
Với tên và mật khẩu chính xác người dùng có thể truy cập vào các tệp tin, thư điện tử, tài khoản của mình ở ngân hàng hay những thông tin cá nhân của khác…Mà người dùng không muốn một người dùng nào khác biết được Vì vậy có thể nói lợi ích
do hệ thống này mang lại là rất lớn đối với cuôc sống hiện đại ngày nay Nhưng các hệ thống xác thực người dùng hiện nay cũng gặp phải không ít những vấn đề khó khăn:
Mật khẩu của người dùng có thể bị đánh cắp bởi những người dùng trên mạng internet Những hacker có rất nhiều công cụ để có thể lấy được mật khẩu Do đó đối với hệ thống xác thực người dùng để đảm bảo an toàn thì người dùng phải thay đổi mật khẩu thường xuyên, do đó sẽ làm cho người dùng khó nhớ
Trên thế giới hiện nay phương thức xác thực phổ biến vẫn là sử dụng các ký tự làm mật khẩu và xu hướng đặt mật khẩu của người dùng có thể là sở thích, tên một nhân vật nổi tiếng ưa thích, hoặc ngày sinh nhật… Sẽ làm cho kẻ tấn công sẽ dự đoán được Đối với những mật khẩu thông thường thì người dùng có thể mô tả được hoặc ghi lại được vì vậy rất dễ bị lộ
Trang 21+ Trong sự xác thực một phía, chỉ một phía thực hiện sự xác thực tự bản thân mình khi liên lạc
+ Trong sự xác thực thực thể đồng thời, cả hai bên phải xác thực lẫn nhau
- Sự xác thực trách văn bản gốc cung cấp bằng chứng để một đoạn dữ liệu, cũng như một thư điện tử, trong thực tế được tạo bởi người sử dụng chính thức
2.1.4 Các giao thức xác thực
Sức mạnh của một hệ xác thực phụ thuộc khả năng của hạ tầng, hỗ trợ để lưu giữ khóa mật mã dài và thực hiện các phép toán mật mã Con người không có cả hai khả năng này Trừ khi hạ tầng bổ sung thêm các đại lượng này cho người dùng, và hệ thống xác thực cần phải dựa vào mật khẩu ngắn để kiểm tra nhận dạng của người dùng Điện thoại và thiết bị dumb terminals là những ví dụ về hạ tầng không có khả năng này
Nếu một người truy nhập đến một thiết bị thông minh, ví như máy tính hoặc Smart card, bằng bất cứ cách nào, hệ thống xác thực hứa hẹn một giao thức xác thực tỉ
mỉ hơn với thiết bị kiểm tra nét nhận dạng của người truy nhập Các giao thức này có thể thúc đẩy các phép toán mật mã tổng hợp và dùng khóa mật mã dài để phá vỡ nhiều dạng tấn công thông tin
+ Giao thức thử thách và trả lời: Giao thức thử thách và trả lời cho phép
người truy nhập tự xác thực mình với hệ thống bằng cách chứng minh hiểu biết của mình về giá trị mật mã bí mật mà không yêu cầu người truy nhập tiết lộ bí mật Hệ thống xác thực đưa ra cho người truy nhập một số được tạo ra một cách ngẫu nhiên được gọi là thử thách Người truy nhập nhập số thử thách và giá trị mật để hàm mật mã tính ra câu trả lời Hệ thống xác thực nét nhận dạng của người truy nhập nếu câu trả lời
là giá trị mong đợi Bởi vì thử thách là một số ngẫu nhiên, giao thức thử thách – trả lời cung cấp một lá chắn có hiệu quả chống lại sự tấn công lặp lại
Trang 22Hình 2.1: Mô hình quá trình xác thực người dùng
Hầu hết các hệ thống xác thực người dùng hiện nay người dùng muốn đăng nhập đều phải nhập tên và mật khẩu Trong đó tên và mật khẩu là do người dùng tạo
ra Tên và mật khẩu của người dùng sẽ được hệ thống mã hoá và lưu vào cơ sở dữ liệu Mật khẩu của người dùng phải được các hệ thống xác thực mã hoá để đảm bảo an toàn bằng những thuật toán mã hoá khác nhau Đặc biệt là các hệ thống máy tính mật khẩu của người dùng phải được mã hoá bằng những thuật toán đặc biệt, ví dụ như hệ điều hành Linux hay Unix sử dụng các thuật toán DES, MD5, hay Blowfish để mã hoá mật khẩu thành hàm băm trước khi lưu vào cơ sở dữ liệu, hay WindowNT sử dụng MD4
và DES để mã hoã mật khẩu Khi đăng nhập vào hệ thống thì người dùng phải nhập lại tên và mật khẩu mà người dùng đã đăng kí Hệ thống sẽ so sánh tên và mật khẩu mà người dùng nhập với mật khẩu đã đăng kí Nếu đúng người dùng đăng nhập thành công, ngược lại người dùng sẽ phải đăng nhập lại Hệ thống sẽ từ chối nếu sau một vài lần đăng nhập không thành công Hình vẽ 2.2.4-1 mô tả quá trình xác thực người dùng
Trên thế giới hiện nay các hệ thống xác thực người dùng phổ biến vẫn là sử dụng các kí tự làm mật khẩu ví dụ như các hệ thống thư điện tử của yahoo hoặc gmail, ATM…
Trang 23
Hình 2.2: Hệ thống xác thực người dùng của Gmail và Yahoo
+ Giao thức mật khẩu được chuyển đổi: Trong giao thức này, người truy
nhập chế biến mật khẩu của mình qua hàm băm rồi gửi kết quả tới hệ thống xác thực
Hệ thống so sánh giá trị băm với giá trị băm chính xác của mình và xác thực nét nhận dạng của người sử dụng nếu hai giá trị như nhau Nếu hệ thống lưu giữ mật khẩu thay
vì giá trị băm của chúng, hệ thống sẽ tính giá trị băm của mật khẩu trước khi đưa ra so sánh Giao thức mật khẩu được chuyển đổi thể hiện mật khẩu dưới dạng hiện, nên nó
dễ bị tổn thương trước sự tấn công lặp lại
+ Giao thức mật khẩu sử dụng một lần: Giao thức mật khẩu sử dụng một lần
là một dạng quan trọng của giao thức mật khẩu được chuyển đổi để che chắn chống lại
sự tấn công lặp lại được thực hiện bởi kẻ nghe trộm Giao thức này yêu cầu người truy nhập và hệ thống xác thực chia một số bí mật nhỏ n Người truy nhập băm mật khẩu của mình n lần để tạo ra mật khẩu sử dụng một lần và xác thực người truy nhập nếu hai kết quả là như nhau Trên cơ sở của sự xác thực thành công, cả hai bên giảm lượng
n Một kẻ trộm không thể thực hiện việc tấn công lặp lại bởi vì mật khẩu sử dụng một lần tiếp theo là khác và nó không thể xác định từ giá trị trước đó Trong giao thức này, cần phải thay đổi mật khẩu của người dùng và lập lại n khi n tiến tới 0
Trang 24+ Giao thức chứng chỉ số: Giao thức chứng chỉ số là một dạng của giao thức
thử thách - trả lời mà ở đó giá trị mật mã bí mật là một khóa riêng và hệ thống xác thực dùng khóa công khai tương ứng với khóa riêng để xác thực câu trả lời
+ Giao thức nhận dạng sinh trắc học: Khi người dùng đăng nhập mật khẩu
của người dùng sẽ được so sánh với mật khẩu đã lưu trong cơ sở dữ liệu thông qua mạng máy tính Nếu đúng quá trình xác thực thành công Giao thức này có độ bảo mật cao
2.1.5 Các phương thức về xác thực
+ Xác thực theo thẻ: Xác thực theo thẻ, là công nghệ để xác thực người dùng
muốn đăng nhập vào một hệ thống, mạng hay máy chủ, được sử dụng khá phổ biến hiện nay trên thế giới cũng như ở Việt Nam Ví dụ như : key card, bank card, smart card, ATM card… Mật khẩu mà người dùng phải nhớ đó là số PIN
+ Xác thực dựa theo tri thức: Xác thực dựa theo tri thức là phương thức sử
dụng rộng rãi nhất hiện nay trên thế giớ Đây là phương thức đã rất quen thuộc với người dùng Phương thức này bao gồm cả sử dụng mật khẩu bằng dãy các kí tự và hình ảnh
+ Xác thực dựa theo nhân trắc quan: Xác thực dựa theo nhân trắc quan là
phương thức sử dụng công nghệ như nhận dạng vân tay, võng mạc, khuôn mặt, giọng nói, loại máu, những chi tiết sinh học nhỏ trên cở thể người dùng… Hệ thống sẽ kiểm tra những đặc điểm sinh học duy nhất của nguời dùng để xác định nguời dùng đó là ai bằng cách sử dụng dấu vân tay hay âm thanh …của người dùng làm mật khẩu Do đó mật khẩu không dễ dàng thay đổi được Mật khẩu được mã hoã dưới dạng hàm băm bằng hệ thống PKCs và được lưu ở một nơi khác
Trang 252.2 Giao thức xác thực OAuth
2.2.1 Một số khái niêm liên quan
*) Authentication (sự xác nhận là đúng): thường liên quan đến việc người
dùng phải “đăng nhập” vào hệ thống Xác nhận thông tin đăng nhập (người sử dụng)
có chính xác không
*) Authorization (sự cho phép): chỉ quyền được cấp của người sử dụng trên tài
nguyên hệ thống
*) Single Sign On: là việc người dùng có thể đăng nhập vào một website (như
google.com) và sử dụng đăng nhập đó trên các website khác SSO là một tiện ích, thường được sử dụng trên các website liên quan mật thiết đến nhau Tiện ích SSO có nhiều phương pháp để thực hiện, Secure Assertion Markup Language (SAML) là một trong các phương pháp đó
Nguyên lý hoạt động của WebSSO cơ bản:
Bước 1: Người dùng đăng nhập vào tài khoản tại url của dịch vụ SSO để xác thực Ví dụ: https://login.live.com, https://login.yahoo.com Sau khi đăng nhập thành công chuyển sang bước 2
Bước 2: Dịch vụ xác thực (Authentication Service) sẽ thực hiện việc sinh ra thẻ xác thực (Authentication Token) Đây là một chuỗi chứa thông tin chứng thực (không chứa mật khẩu) và thông thường được mã hóa bằng DES hoặc RSA
Bước 3: Thẻ xác thực sẽ được truyền tải trên http (không mã hóa SSL) giữa ứng dụng web (partner) và dịch vụ xác thực Trên mỗi ứng dụng web sẽ có một SSOAgent,
có nhiệm vụ xử lý thẻ xác thực và kiểm tra việc chứng thực Trong quá trình này session cookie sẽ được tạo tại trình duyệt của người dùng đăng nhập nếu SSOAgent kiểm tra thẻ xác thực thành công
Bước 4: Đăng xuất (Sign Out): Khi chứng thực tự động vào một ứng dụng web, dịch vụ xác thực sẽ lưu lại thông tin ứng dụng web này, khi người dùng chọn đăng xuất thì dịch vụ xác thực sẽ lần lượt xóa toàn bộ session cookie của ứng dụng web
*) Central Authentication Service (CAS): là một protocol phục vụ Single
Sign-on trên nền web được phát triển tại đại học Yale Nó cho phép user truy cập nhiều ứng dụng web khác nhau mà chỉ cần login một lần
Protocol CAS bao gồm ít nhất 3 thành phần: web browser, web application và CAS server
Khi web browser truy cập vào web application, application sẽ redirect user tới trang đăng nhập của CAS server
Nếu đăng nhập thành công, CAS server sẽ redirect trở về lại web application, kèm theo một security ticket Web application sẽ dùng identifier của chính nó và ticket này để kiểm tra với CAS server xem user đó đã đăng nhập hay chưa
Hiện nay có 3 bản implement protocol CAS phần server được sử dụng nhiều:
- Jasig CAS server: Được phát triển bởi tổ chức Jasig, sử dụng ngôn ngữ Java
Trang 26- ESUP CAS server: Một phần của dự án ESUP Portail, sử dụng ngôn ngữ Java
- RubyCAS server: CAS server phát triển bằng ngôn ngữ Ruby
Kết hợp CAS vào các ứng dụng web đã có: Các CAS server chỉ làm nhiệm vụ
hỗ trợ authenticate, thông tin về các user cần được quản lí bằng một application khác
Vì vậy đầu tiên ta cần xác định sẽ để cho một web application sẵn có quản lí các user hay tạo application mới chuyên dùng cho việc này
Sau khi triển khai xong CAS server và application quản lí các user, ta cần triển khai các CAS client cho các ứng dụng còn lại để user có thể đăng nhập bằng tài khoản tại CAS server
Hiện có rất nhiều CAS client cho các ngôn ngữ khác nhau như Java, PHP, Python, Ruby, NET, và các module hỗ trợ CAS cho các web framework như Drupal, Moodle, Django,
OAuth là phương pháp chia sẻ tài nguyên giữa các ứng dụng mà không phải đưa ra username và password Các hãng lớn như Google, Aol, Yahoo… đều có các phương pháp xác thực của riêng mình Nhưng nó khiến các bên thứ ba khó khăn khi tích hợp với họ Vì vậy họ họp nhau lại để tạo ra chuẩn Open Authorization
Có rất nhiều giao thức chứng thực trên internet: Google AuthSub, AOL OpenAuth, Yahoo BBAuth, Upcoming API, Flickr API, Amazon Web Services API, Facebook Auth… gây khó khăn cho lập trình viên khi phát triển ứng dụng OAuth là
sự tập hợp những ưu điểm của chúng và gom lại thành chuẩn chung
sẽ sản xuất một hoặc nhiều tài liệu thích hợp để xem xét như là tiêu chuẩn mà sẽ:
- Cải thiện các thuật ngữ được sử dụng
- Bảo đảm an ninh thực tế, hoặc các tài liệu trong các khoảng trống khả năng và
đề xuất một con đường chuyển tiếp cho các địa chỉ khoảng cách
- Phát triển các khả năng làm việc nhóm
- Cung cấp các hướng dẫn có thể mở rộng
Trang 27Điều này cụ thể có nghĩa là một điểm khởi đầu cho nhóm làm việc OAuth 1.0 (tức là, dự thảo-hammer-oauth), một bản sao của bản gốc OAuth đặc điểm kỹ thuật trong IETF, được sử dụng và có thể được mở rộng Trong công việc cập nhật OAuth 1.0 trở thành OAuth 1 1, nhóm vẫn giữ các tương thích với oAuth 1.0 về các tiêu chuẩn kỹ thuật Tuy nhiên, các thay đổi mà không tương thích có thể được chấp nhận nếu các nhóm xác định rằng mục tiêu và các tài liệu rõ ràng và các thay đổi được yêu cầu phải đáp ứng yêu cầu của của nhóm kỹ thuật
Xa hơn, OAuth 1.0 định nghĩa ba phương thức “chữ kí” để bảo vệ các yêu cầu PLAINTEXT, HMAC-SHA1 và RSA -SHA1 Nhóm sẽ làm việc trên các phương thức xác thực “chữ kí” mới và sẽ mô tả môi trường nơi mà các yêu cầu an ninh sử dụng Hiện nay, phương pháp chữ kí không được sửa đổi, nhưng có thể bỏ đi phần backward của các hoạt động tương thích Các ứng dụng hiện tại và các phương pháp mới xác thực giao thức khác so với HTTP sẽ được nghiên cứu tỉ mỉ
*) Mục tiêu và lộ trình nghiên cứu :
- Tháng 4 năm 2009: Đệ trình “OAuth: Phương thức ủy quyền cấp phép HTTP” như một tin tức của nhóm làm việc ( bản dự thảo hammer-oauth sẽ được sử dụng đề bắt đầu các công việc xa hơn)
- Tháng 7 năm 2009: Gửi một tài liệu như là tin tức của nhóm làm việc về chức năng của cơ chế xác thực 2-legged HTTP
- Tháng 7 năm 2009: Bắt đầu hội thảo về các mở rộng OAuth mà nhóm nên thực thi
- Tháng 10 năm 2009: Bắt đầu nhóm làm việc là OAuth: phương thức ủy quyền xác thực HTTP
- Tháng 11 năm 2009: Đệ trình “OAuth:phương thức ủy quyền xác thực” tới IESG để cân nhắc tiêu chuẩn đề xuất
- Tháng 11 năm 2009: Bắt đầu Working Group Last Call về các tài liệu cơ chế xác thực 2-legged HTTP
- Tháng 11 năm 2009: chuẩn bị lộ trình cập nhập để bắt đầu công việc mới trong phạm vi của bản tuyên bố
- Tháng 12 năm 2009: Đệ trình tài liệu phương thức xác nhận 2-legged HTTP tới IESG để cân nhắc tiêu chuẩn đề xuất
2.2.3 Cách hoạt động của OAuth
OAuth là phương pháp để Client sử dụng được tài nguyên của User bên phía Server Bắt đầu quá trình xác thực với những bên liên quan như sau:
Client: là ứng dụng, chỉ là một ứng dụng và có thể là ứng dụng Desktop hay
cũng có thể là website như http://www.youbrainy.com muốn có quyền sử dụng tài nguyên của Server
Server: là một ứng dụng khác, chẳng hạn như google.com
Trang 28User (hay You): chính bạn, người có tài nguyên trên Server và muốn cho Client
quyền sử dụng tài nguyên đó
*) Phân biệt hai loại OAuth
2-legged OAuth: là kiểu xác thực trong đó vai trò của User và Client là như
nhau Tức là Client chính là User của Server Đó là kịch bản Client-Server thông thường
3-legged OAuth: là kiểu xác thực trong đó User và Client là phân biệt Client
muốn User chia sẻ tài nguyên đã có bên phía Server
*) Cách OAuth hoạt động
2- legged OAuth:
1 Client đăng ký sử dụng dịch vụ với Server
2 Server cho Client
CONSUMER_KEY
CONSUMER_SECRET_KEY
3 Client sử dụng các keys trên để thực hiện Authorization
3- legged OAuth
1 Client đăng ký sử dụng dịch vụ với Server
2 Server cho Client
CONSUMER_KEY
CONSUMER_SECRET_KEY
3 User có tài nguyên ở Server
4 User sử dụng dịch vụ ở Client, Client yêu cầu User cho phép khai thác tài nguyên của User ở Server
5 Client yêu cầu Server gửi REQUEST_TOKEN cho User
6 Client chuyển User đến Server Authentication
7 User đăng nhập vào Server, Server hỏi User có muốn chia sẻ quyền khai thác dữ liệu cho Client hay không
8 User đồng ý, Server chuyển User về Client kèm theo ACCESS_TOKEN
9 Client sử dụng ACCESS_TOKEN để thực hiện thao tác trên các tài nguyên của User thuộc Server
Trang 292.2.4 Phân biệt OAuth và OpenID
OpenID OAuth Đăng nhập và lấy thông tin người sử dụng Có Có
Post / Retrieve không cần xác thực lại Không Có
OpenID: OpenID cho phép user sử dụng một account đã có ở một web site hỗ trợ như Google, Yahoo!, MySpace, để login vào một web site khác Khác với CAS
ở chỗ user vẫn phải login vào từng site, còn đối với CAS user chỉ cần login một lần
OAuth: OAuth là một protocol cho phép user cấp phép cho một web application truy cập thông tin của mình trên một site khác mà không cần cung cấp thông tin login cho web application đó
Trang 30CHƯƠNG 3 Xây dựng ứng dụng kết nối Facebook
(OAuth.F.B.)
3.1 Giới thiệu về Facebook Platform
Facebook Platform cung cấp một framework cho người phát triển để tạo ra các ứng dụng tương tác và tích hợp với các tính năng cốt lõi của Facebook Được giới thiệu vào ngày 24 tháng 5 năm 2007 và đến ngày 09 tháng 12 năm 2009 đã có hơn 500.000 ứng dụng hoạt động trên Facebook Platform Facebook platform bao gồm 4 thành phần: FBML, API, FQL và FBJS
Khi tạo ra một ứng dụng từ Facebook Platform, có thể tích hợp một vài thành phần trong framework:
- Hiện thư mục ứng dụng
- Cung cấp trang giới thiệu
- Cung cấp cho người sử dụng những lựa chọn
- Giới thiệu cho những người khác
- Hiển thị trang Facebook Canvas
- Tạo Left Nav
- Hiển thị box thông tin
- Tạo link liên kết tới profile
- Thực thi và gửi thông báo tới nguồn tin
- Gửi thông báo email
- Tạo yêu cầu
- Tạo tin nhắn đính kèm
- Tích hợp với các thiết lập bảo mật của Facebook
3.2 Các đối tượng nền tảng của Facebook
3.2.1 Facebook API
API là viết tắt của Application Programming Interface ( giao diện chương trình ứng dụng ) Facebook API là một nền tảng để xây dựng những ứng dụng cho các thành viên của mạng xã hội Facebook API cho phép các ứng dụng sử dụng các kết nối xã hội và các thông tin hồ sơ để làm cho các ứng dụng liên quan tới nhau nhiều hơn, và
để phổ biến những hoạt động tới nguồn cung cấp tin và trang hồ sơ của Facebook, tùy thuộc vào cài đặt cá nhân của người dùng API cung cấp những lời gọi để lấy thông tin
về người sử dụng, nhóm người dùng, bạn bè, thông báo, sự kiện và nguồn cấp dữ liệu…Cũng có thể dùng lời gọi API để cập nhật và lấy thông tin hồ sơ
API sử dụng giao thức RESTful và các hồi đáp được trả lại dưới dạng XML
Trang 31*) Facebook API làm việc như thế nào?
API là nền tảng do Facebook cung cấp cho người viết ứng dụng để dễ dàng trong việc tạo ứng dụng và đảm bảo người viết ứng dụng không can thiệp quá sâu vào
hệ thống của Facebook API cho phép thực thi nền tảng thông qua các phương thức được định nghĩa Thông qua các lời gọi API, người tạo ứng dụng có thể lấy thông tin
về user, groups, photo,… mà họ cần
Hình 3.1: Cách thức làm việc của Facebook API
Facebook gửi phương thức POST tới máy chủ Facebook API Nó bao gồm một
số các thông số yêu cầu như api_key của ứng dụng Session_key của người dùng đưa
ra yêu cầu Bên cạnh đó Facebook còn thêm vào tham số fb_sig để thông báo ứng dụng đưa ra yêu cầu bằng cách này tất cả các lời gọi API sẽ được đảm bảo, Facebook
có thể xác minh các yêu cầu được gửi từ một ứng dụng đã được chấp thuận Thông tin
mà Facebook sẽ trả lại là một tài liệu XML
3.2.2 Các phương thức của API
Các phương thức API của Facebook được chia thành các nhóm một cách hợp lý:
Trang 32+ Auth.createToken()
- Mô tả: tạo ra một auth_token để vượt qua trang login.php của Facebook để sau
đó tạo ra một phiên giao dịch khi người dùng đã đăng nhập
- Tham số: api_key, sig, v
bỏ qua, phương thức trả về tất cả các sự kiện liên quan tới eids được cung cấp
- Tham số: uid, eids,start_time, end_time, rsvp_status
- Ví dụ:
Lọc sự kiện của một người dùng:
$events = $facebook->apiclient->events_get(
12345,null,null,null,null);
Lọc sự kiện của tập id sự kiện được cung cấp
$events = $facebook->api_client->events_get (null,
array(14381739642,16044821668), null,null,null);
+ Events.getMember()
- Mô tả: Trả về danh sách thành viên liên quan tới một sự kiện Đây là một mảng đa chiều với chiều thứ nhất chứa tình trạng RSVP( attending, unsure, declined, not_replied) và chiều thứ 2 là uid của người dùng
- Tham số: eid
- Ví dụ:
$members=$facebook->api_client->events_GetMembers($eid);
Trang 33- Ví dụ: $facebook->api_client->stream_publish($mess);
e) Fql
Như đã biết, Facebook cung cấp các nhóm hàm API để lấy dữ liệu, bên cạnh
đó, API còn cung cấp một nhóm hàm để giúp người viết ứng dụng sử dụng các câu truy vấn FQL để lấy dữ liệu từ cơ sở dữ liệu của Facebook
+ Fql.query()
- Mô tả: Thực hiện một truy vấn FQL Với các truy vấn phức tạp, kết quả của một truy vấn ở bên trong truy vấn khác, để tránh lặp lại việc gọi hàm API nhiều lần, có thể sử dụng phương thức fql.multiquery()
- Tham số: query
- Ví dụ:
$query = "SELECT name FROM user WHERE uid IN
(SELECT uid2 FROM friend WHERE uid1=211031)";
$result = $facebook->api_client->fql_query($query);
Trang 34$query2 = "SELECT pid, subject FROM photo_tag
WHERE pid IN ($pids)";
Trang 35- Mô tả: Trả về danh sách thành viên của một nhóm Kết quả trả về là một mảng
đa chiều với chiều đầu tiên là kiểu thành viên (admin, member, officer, not_replied)
+ Photos.addTag()
- Mô tả: Thêm một thẻđi kèm thông tin cho một bức ảnh Thẻ chỉ có thể thêm vào những bức ảnh đang chờ giải quyết thuộc sở hữu của người dùng cụ thể hoặc người dùng hiện hành Ứng dụng với quyền mở rộng photo_upload có thể thêm thẻ vào bất kì bức ảnh nào thuộc quyền sở hữu của người dùng
- Tham số: pid, tag_uid,tag_text, x, y
- Ví dụ:
$result = $facebook->api_client->photos_addTag(
$pid,$uid,null,50,50,null,null);
Trang 36+ Photos.createAlbum()
- Mô tả: Tạo và trả về một album mới thuộc quyền sở hữu của một người dùng
cụ thể hoặc người dùng hiện hành
- Tham số: subj_id, aid, pids
- Ví dụ:
$photos=$facebook->api_client->photos_get(
null,$pid,null);
+ Photos.getAlbum()
- Mô tả: Trả về siêu dữ liệu về tất cả các album ảnh được tải lên bởi người dùng
cụ thể Phương thức này trả về thông tin của tất cả các album dựa theo tiêu chí lọc Nó
có thểđược sử dụng để trả lại tất cả các album ảnh được tạo ra bởi người dùng, truy vấn một danh sách các album thông qua aids hoặc lọc theo cả 2 tiêu chí trên
- Tham số: uid, aids
Trang 37- Mô tả: Trả về thông tin của người dùng cụ thể
- Tham số: uids, fields