Upload
voliem
View
219
Download
1
Embed Size (px)
Citation preview
Phát triển ứng dụng kết nối Facebook trên cơ
sở giao thức Oauth (open authentication)
Trần Văn Lễ
Trường Đại học Công nghệ
Luận văn ThS. ngành: Hệ thống thông tin; Mã số: 60 48 05
Người hướng dẫn: TS. Nguyễn Hải Châu
Năm bảo vệ: 2012
Abstract. Tổng quan về mạng xã hội ảo, mạng xã hội Facebook và ứng dụng
Facebook. Nghiên cứu những 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. Tìm hiểu các vấn đề liên quan đến việc cài đặt, triển
khai hệ thống và kết quả đạt được khi chạy thử hệ thống. Đưa ra các kết quả đạt
được, hướng mở rộng và phát triển hệ thống.
Keywords. Hệ thống thông tin; Mạng xã hội; Oauth; Giao thức truyền thông;
Content
MỞ ĐẦ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.
CHƢƠNG 1. Mạng xã hội FaceBook
1.1. Tổng quan về mạng xã hội ảo
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 lần lượt của những mạng xã hội như
SixDegrees (1997), Friendster (2002), …
Mạng xã hội MySpace ra đời năm 2004 là 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.
*) Cấu thành
Nút (node): là một thực thể trong mạng, 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ể (node). Trong mạng có thể có nhiều
kiểu liên kết.
*) Mục tiêu
Tạo ra một hệ thống trên nền Internet cho phép người dùng giao lưu và chia sẻ thông
tin một cách có hiệu quả, vượt ra ngoài những giới hạn về địa lý và thời gian.
Xây dựng lên một mẫu định danh trực tuyến nhằm phục vụ những yêu cầu công cộng
chung và những giá trị của cộng đồng.
Nâng cao vai trò của mỗi công dân trong việc tạo lập quan hệ và tự tổ chức xoay
quanh những mối quan tâm chung trong những cộng đồng thúc đẩy sự liên kết các tổ chức xã
hội.
1.2. Mạng xã hội Facebook
Facebook là một dịch vụ mạng xã hội trực tuyến phổ biến, truy cập miễn phí do công
ty Facebook,Inc điều hành và sở hữu tư nhân. 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). 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.
1.2.1. Cơ chế hoạt động và cách thức làm việc
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 Facebook trung bình mỗi giây phải hiện 600 nghìn hình ảnh cùng một lúc. Để
giải quyết vấn đề này Facebook đã sử dụng vùng lưu trữ đệm (cache) và là trái tim của hệ
thống.
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. 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.
Hình 1.6: Cách thức làm việc của Facebook
1) 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.2. 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:
Alerts
Business
Chat
Classified
Dating
Education
Events
Fashion
File sharing
Food and
Drink
Gaming
Just for fun
Messaging
Mobile
Money
Music
Photo
Politics
Sports
Travel
Utility
Video
CHƢƠNG 2. Xác thực và xác thực bằng OAuth
2.1. Tổng quan về xác thực
Xác thực (Authentication) là một hành động nhằm thiết lập hoặc chứng thực một cái
gì đó (hoặc một người nào đó) đáng tin cậy, có nghĩa là những lời khai báo do người đó đưa
ra hoặc về vật đó là sự thật.
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à đã
bộc lộ nhiều hạn chế như: Kẻ tấn công sẽ dự đoán được hoặc có thể bị đánh cắp bởi những
người dùng trên mạng internet.
2.2. Giao thức xác thực OAuth
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.
2.2.1. OAuth - phương thức xác thực mở
OAuth cho phép người sử dụng cấp cho một trang web đối tác thứ ba hoặc là truy
nhập ứng dụng tới tài nguyên của chúng, mà không cần thiết phải tiết lộ thông tin ủy nhiệm,
hay kể cả thông tin nhận dạng của chúng.
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ó 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.
OAuth bao gồm:
- Một cơ chế cho người sử dụng ủy quyền mà một bên thứ ba có thể sử dụng để truy
nhập vào các tài nguyên của chúng.
- Cơ chế cho phát hành bằng cách sử dụng để xác thực các thông tin ủy nhiệm.
Các yêu cầu HTTP (gọi là "chữ ký" trong hiện tại OAuth). Các Nhóm công tác 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.
2.2.2. 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://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.
User (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.
CHƢƠNG 3. Xây dựng ứng dụng kết nối Facebook
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
*) 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 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.
*) Các phƣơng thức của API
Các phương thức API được chia thành các nhóm hợp lý:
Authentication
Events
FBML
Feed
Notifications
Profile
Fql
Photos
Friends
Groups
Error
codes
Users
*) Data Store API
Data store API chủ yếu thiết kế để giúp các nhà phát triển ứng dụng nhanh chóng tìm
ra một giải pháp lưu trữ mở rộng, có thể theo kịp với sự tăng nhanh của cơ sở dữ liệu của họ.
API này cung cấp các phương thức cơ bản như tạo, đọc, xóa , cập nhật.
*) 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 thành các yêu cầu đến các máy chủ của Facebook. Nó
hỗ trợ các ngôn ngữ lập trình như: ActionScript, ASP.Net, ASP(VBScript), ColdFusion, C++,
C#, D, Emacs Lisp, Lisp, Perl, PHP(4 và 5), Python, Ruby, VB.Net và Windows mobile.
*) Ngôn ngữ đánh dấu Facebook - FBML
Hầu hết các thẻ FBML giống với các thẻ HTML. FBML cung cấp thêm 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 ứng dụng. FBML cũng hỗ trợ các yếu tố tạo style như CSS.
FBML cho phép xây dựng một ứng dụng trên nền tảng Facebook một cách đầy đủ.
Khi ứng dụng trả về FBML, đi qua proxy của Facebook, các thẻ FBML sẽ được render để trả
về dạng HTML.
*) Nhóm các thẻ FBML
Các thẻ FBML được chia thành các nhóm:
User/Groups
Tools
Status Messages
PlatformInternati
onalization
Visibility on
MessageAttach
ments
Editor Display
Misc
Profile-specific
Wall
Social Widgets
Additional
Permissions
Dialog
Notificationsand
Requests
Profile
Page Navigation
Forms Embedded Media
*) CSS
CSS được dùng trong Facebook hoàn toàn tương tự như dùng trong các trang web
thông thường. Cũng như hình ảnh, CSS được lưu trữ bởi máy chủ của Facebook , do vậy nếu
thay đổi nội dung file CSS, bắt buộc phải thay đổi tên của file nếu không máy chủ Facebook
sẽ làm việc trên file cũ.
*) Ngôn ngữ truy vấn – FQL
Ngôn ngữ truy vấn của Facebook (FQL) là một ngôn ngữ dựa trên ngôn ngữ SQL,
được các nhà phát triển Facebook tạo ra để giúp người viết ứng dụng truy xuất tới các bảng
trong cơ sở dữ liệu bao gồm các bảng : user, friend, group, group_member, event,
event_member, photo, album, and photo_tag..
*) Ngôn ngữ tạo script – FBJS
FBJS là ngôn ngữ dựa trên Javascript để tạo ra các script giúp cho người dùng xây
dựng ứng dụng một cách dễ dàng hơn.
FBJS là một hình thức rất hạn chế của Javascript mà Facebook đưa ra để ngăn chặn
các mã độc hại trong các ứng dụng. Vấn đề bảo mật được các nhà phát triển Facebook quan
tâm hàng đầu, do vậy FBJS chính là công cụ để kiểm soát vấn đề này. Cũng như FBML,
FBJS được phân tích và viết lại trước khi được trả lại cho người dùng.
3.3. Xây dựng ứng dụng OAuth.F.B.
3.3.1. Mô tả môi trường thực nghiệm
*) Máy chủ LAMP: chạy trên nền hệ điều hành mã nguồn mở Fedora 16, cài đặt các
chương trình mã nguồn mở phổ biến sau:
1. Máy chủ phục vụ web Apache/2.2.22 Unix (Web Server)
2. Hệ quản trị cơ sở dữ liệu: MySql Ver 14.14 Distrib 5.5.21, for Linux (i686) using
readline 5.1.
3. Ngôn ngữ lập trình PHP Version 5.3.13; Server API: CGI/FastCGI; cài đặt các gói
php-mysql, php-gd, php-xml, php-xmlrpc, php-pdo, php-mbstring.
*) Drupal 6.5: là khung sườn phát triển phần mềm hướng mô-đun, một hệ thống quản
trị nội dung miễn phí và mã nguồn mở (Open Source CMS).
*) Drupal module: là phần mềm (mã nguồn) mở rộng các tính năng cài đặt trên
Drupal, chứa các file thực thi được thiết kế để thực hiện các chức năng cụ thể. Sử dụng ngôn
ngữ lập trình PHP và Drupal API để phát triển.
*) FaceBook API : là một nền tảng được hãng facebook cung cấp để xây dựng những
ứng dụng cho các thành viên của mạng xã hội Facebook.
*) OAuth.F.B. : là một Drupal module, được phát triển thành hệ thống kết nối ứng
dụng web với trang mạng xã hội ảo Facebook trên cơ sở giao thức OAuth (Open
Authentication). Chương trình OAuth.F.B. sử dụng môi trường thực nghiệm nêu trên để thiết
kế và cài đặt cụ thể như yêu cầu của luận văn đặt ra.
3.3.2. Thiết kế OAuth.F.B.
*) Đăng ký ứng dụng OAuth.F.B. trên FaceBook
Cần đăng ký OAuth.F.B. thành một ứng dụng chạy trên FaceBook để có thể lấy được
access_token của người dùng, từ đó có thể truy cập FaceBook theo phương thức xác thực mở
OAuth. Access_token của người dùng được lưu trên cơ sở dữ liệu của chương trình để có thể
tương tác với các trang FaceBook của người dùng khi nhận được yêu cầu.
*) Xây dựng module oauth. facebook
Thiết kế ứng dụng OAuth.F.B. để có thể chạy như một ứng dụng trên FaceBook, thực
hiện việc hỗ trợ cho người dùng có thể dễ dàng đăng ký và xác thực đăng ký, lưu lại các
thông tin truy cập cần thiết trên cơ sở dữ liệu riêng của ứng dụng.
Thiết kế ứng dụng OAuth.F.B. cung cấp các hàm truy cập từ xa thông qua XML-RPC.
Đọc thông tin truy cập của người dùng, xác nhận và thực hiện theo các chức năng được yêu
cầu.
*) Tạo mã để cấp cho client sử dụng OAuth.F.B.
Cần tạo bộ mã nguồn đơn giản và thuận tiên để người sử dụng OAuth.F.B. có thể tích
hợn vào ứng dụng của ho.
Bộ mã nguồn cung cấp khả năng sử dụng các hàm truy cập từ xa của ứng dụng
OAuth.F.B. giúp tương tác với các trang FaceBook của những người dùng đã đăng ký sử
dụng OAuth.F.B.
3.3.3. Cơ sở dữ liệu của OAuth.F.B.
Chương trình sử dụng 3 bảng dữ liệu chính, lưu trữ trên hệ quản trị cơ sở dữ liệu
mysql:
smsfacebook_reg : lưu thông tin truy cập của người dùng.
smsfacebook_downmsg : lưu dữ liệu đã tải về từ facebook của người dùng.
smsfacebook_upmsg : lưu dữ liệu đã gửi lên facebook của người dùng.
3.3.4. Sơ đồ hoạt động của ứng dụng OAuth.F.B.
Hình 3.3: Sơ đồ hoạt động của OAuth.F.B.
Hình 3.6: Sơ đồ chi tiết hoạt động của OAuth.F.B.
3.3.5. Một số hàm sử dụng trong OAuth.F.B.
a. Hoạt động đăng ký và xác nhận đăng ký
Để đăng ký sử dụng OAuth.F.B. người dùng cần cung cấp số điện thoại đăng ký cho
ứng dụng OAuth.F.B. trên. Ứng dụng sẽ triệu gọi hàm đăng ký (oauth_register và
oauth_mobile) được lưu trên máy chủ của chương trình.
Hàm được gọi sẽ thực hiện việc lấy thông tin của người dùng bao gồm cả
access_token và lưu vào cơ sở dữ liệu. Chương trình sẽ tự sinh ra mã kiểm tra để người dùng
thực hiện việc xác nhận đăng ký sử dụng OAuth.F.B. Để xác nhận đăng ký người dùng cần
liên hệ với chương trình bằng email hoặc điện thoại để được cấp mã xác nhận. Người dùng sử
dụng mã xác nhận được cấp để xác nhận đăng ký. Hàm đăng ký (oauth_register và
oauth_getmobile) cũng sẽ được triệu gọi để xác nhận việc đăng ký của người dùng.
b. Sử dụng chƣơng trình OAuth.F.B.
Để sử dụng chương trình khi cần lấy tin (newsfeed), đăng tin (updatewall) hay bình
luận tin (comment), người sử dụng dùng hàm xmlrpc_call để triệu gọi các hàm tương ứng từ
chương trình OAuth.F.B. như mô tả hình 3.6.
Các hàm tương ứng được triệu gọi qua xmlrpc_call như oauth_newsfeed,
oauth_updatewall hay oauth_comment.
*) Hàm xmlrpc_call:
function xmlrpc_call($host, $uri, $method, $params, &$respond) {
$client = new XML_RPC_Client($uri, $host);
$message = new XML_RPC_Message($method, $params);
$response = $client->send($message);
if ($response->faultCode())
{
echo "Thông báo lỗi XML-RPC service...\n";
$respond = $response->faultString();
return FALSE;
}
$value = $response->value(); //lấy kquả thực thi
//chuyển biến XML_RPC_Value về biến PHP
$respond = XML_RPC_decode($value);
return TRUE;
} //~xmlrpc_call
*) Ví dụ hàm comment:
function comment($mobile, $feedid, $message) {
$server = "222.255.20.46";
$path = "/~admin/smsfacebook/xmlrpc.php";
$method = "smsfacebook. write_comment";
$params = array(
new XML_RPC_Value("14", 'string'),
new XML_RPC_Value(check_mobile_number($mobile),
'string'),
new XML_RPC_Value($feedid, 'string'),
new XML_RPC_Value($message, 'string')
);
$retcode = xmlrpc_call($server, $path, $method,
$params, $respond);
return $respond;
} //~comment
*) Ví dụ hàm oauth_comment:
function oauth_comment($reqid, $requester, $postid, $message)
{
$requester = mobile_encdec($requester);
$local = localnumber($requester);
$access_token = get_access_token($requester);
$fbuid = get_facebookuid($requester);
$postid = base_convert($postid, 36, 10);
$res = db_query("SELECT * FROM {smsfacebook_downmsg} WHERE id='%s'",
$postid);
$x = '';
while ($r = db_fetch_object($res)) {
$x = $r->fbmsgid; break; }
if ($x == '') {
return array('code'=>3, 1=>MSG_WRONGID); }
else { $f = explode('_', $x);
$postid = $f[0].'_'.$f[1]; }
$lastupid = save_upmsg($requester, $fbuid,
"write_comments: <$postid>$message");
if ($access_token == NULL)
return array('code'=>2, '1'=>"So dien thoai chua hoan tat dky hoac da thay doi
mat khau FaceBook!");
$cmd = "/usr/bin/curl -F \"access_token=$access_token\" -F \"message=$message\"
https://graph.facebook.com/$postid/comments";
exec($cmd, &$output, &$code);
$ret = array('code' => $code); $i = 0;
foreach ($output as $o) {
$i++; $json = json_decode($o);
if (isset($json->error)) { // Error
$fbmsg = $json->error->message;
$ret['code']='1';
$ret[$i]=MSG_ERROR; $fbmsgid=-1;
} else {
$id = $json->id;
if (isset($id)) { $fbmsgid = $id;
$ret[$i] = "Binh luan thanh cong";}
else { $fbmsgid = 0;
$ret[$i]="binh luan ko thanh cong";}
}
if ($fbmsgid > 0) {
$lastdownid = save_downmsg(
$fbuid,$requester,$ret[$i],$fbmsgid);
$lastdownid=base_convert(
$lastdownid, 10, 36);
} else $lastdownid = $fbmsgid;
$ret[$i] = "<$lastdownid>".$ret[$i];
} //~foreach
return $ret;
} //~oauth_comment
3.4. Sử dụng OAuth.F.B.
3.4.1. Đăng ký sử dụng
Người sử dụng cần đăng nhập vào một tài khoản facebook và truy cập vào địa chỉ sau
để đăng ký sử dụng OAuth.F.B.
http://apps.facebook.com/smsfbsms
Người sử dụng nhấn OAuth.F.B. để tiếp tục chạy ứng dụng. Nếu tài khoản facebook
chưa đăng ký dịch vụ, trang yêu cầu đăng ký sẽ xuất hiện. Người sử dụng cần cung cấp số
điện thoại để đăng ký.
Sau khi cập nhật số điện thoại đăng ký dịch vụ thành công, người sử dụng cần xác
nhận mã kiểm tra. Quá trình đăng ký hoàn tất sau khi người sử dụng xác nhận lại mã kiểm tra
thành công. Để lấy mã xác nhận người sử dụng có thể làm theo 2 cách gửi email hoặc soạn
tin nhắn để xác nhận. Người sử dụng luôn có thể đăng ký lại hoặc hủy đăng ký dịch vụ nếu
muốn. Việc đăng ký sẽ phải thực hiện lại nếu người dùng đã đổi mật khẩu truy cập trang
facebook.
Hình 3.8: Trang yêu cầu đăng ký sử dụng dịch vụ OAuth. Facebook
Hình 3.10: Xác nhận số điện thoại thành công
3.4.2. Sử dụng ứng dụng
Sau khi hoàn tất đăng ký, người sử dụng có thể tương tác với FaceBook thông qua
ứng dụng OAuth.F.B. mà không cần phải đăng nhập tài khoản FaceBook. Người sử dụng ứng
dụng có thể truy cập vào địa chỉ:
http://222.255.20.36/oafb36.php hoặc
http://222.255.20.46/oafb.php
để sử dụng dịch vụ hoặc cũng có thể sử dụng hệ thống tin nhắn có tích hợp OAuth.F.B. để
tương tác với FaceBook.
Hình 3.12: Demo sử dụng chức năngOAuth. FaceBook
Người sử dụng có thể chạy ứng dụng OAuth.F.B. trên ssh để updatewall (cập nhật
tường), postcomment (viết bình luận) hay newsfeed (đọc tin mới).
Hình 3.13: Demo đọc tin mới, sử dụng OAuth.F.B. trên SSH
3.4.3. Tính hợp ứng dụng OAuth.F.B.
Ứng dụng OAuth.F.B. sẽ cung cấp cho người sử dụng đoạn mã nguồn đủ để có thể
tích hợp ứng dụng OAuth F.B. vào hệ thống dịch vụ nào đó của người dùng.
Ví dụ thực nghiệm, tích hợp OAuth.F.B. vào hệ thống bán hàng đồ điện tử trực tuyến
http://222.255.20.36/shop Người sử dụng và người bán hàng có thể chọn những sản phẩm họ
muốn giới thiệu cho bạn bè để gửi thông tin lên FaceBook.
Hình 3.14: Tích hợp OAuth.F.B. lên website bán hàng
KẾT LUẬN
Sau khi hoàn thành luận văn, thông qua việc nghiên cứu công nghệ OAuth trên
FaceBook, em đã có thể xây dựng được ứng dụng OAuth.F.B. hỗ trợ cho người sử dụng
tương tác với FaceBook nhanh chóng và tiện lợi hơn thông qua việc tích hợp OAuth.F.B. vào
hệ thống của người dùng.
Ứng dụng OAuth.F.B. sau khi cài đặt trên FaceBook, người dùng có thể đăng ký rất
đơn giản và việc sử dụng các tính năng của OAuth.F.B. cũng rất dễ dàng. Để tích hợp
OAuth.F.B. vào các ứng dụng của người dùng đòi hỏi người dùng có kiến thức về lập trình,
nhưng đều là những thao tác tương đối đơn giản.
Ứng dụng OAuth.F.B. có thể được cài đặt trên các hệ thống như: website bán hàng,
web tin tức, dịch vụ tương tác facebook qua tin nhắn,… Xây dựng dịch vụ tương tác
facebook qua tin nhắn là một hướng phát triển của ứng dụng, khi mà người dùng hiện nay
ngày càng sử dụng nhiều các thiết bị di động.
References
Tiếng Việt
1. http://groups.drupal.org
2. http://vi.wikipedia.org
Tiếng Anh
3. Hasin Hayder and Dr.Mark Alexander Bain (5-2008), Learning Facebook
Application Development, Publisher: Packt.
4. Jay Goldman (10-2008), Facebook Cookbook, Publisher: O’Reilly Media.
5. Jesse Stay (7-2008), FBML Essentials, Publisher: O’Reilly Media.
6. Wayne Graham (2008), Facebook API Developers Guide, Publisher: Apress.
7. Simon St. Laurent Joe Johnston Edd Dumbill (7-2001), Programming Web
Services with XML-RPC, Publisher: O'Reilly.
8. http://wiki.developers.facebook.com/
9. http://forum.developers.facebook.com/
10. http://oauth.net
11. https://developers.google.com/accounts/docs/OAuth