15
Phát triển ng dng kết nối Facebook trên cơ sgiao thc Oauth (open authentication) Trần Văn Lễ Trường Đại hc Công nghệ Luận văn ThS. ngành: Hthống thông tin; Mã số: 60 48 05 Người hướng dn: TS. Nguyn Hải Châu Năm bảo v: 2012 Abstract. Tng quan vmạng xã hội o, mạng xã hội Facebook và ứng dng Facebook. Nghiên cứu nhng vấn đề xác thực trong mạng xã hội và trình bày về xác thc mOpen Authentication. Tìm hiểu các vấn đề liên quan đến việc cài đặt, trin khai hthống và kết quđạt được khi chy thhthống. Đưa ra các kết quđạt được, hướng mrộng và phát triển hthng. Keywords. Hthống thông tin; Mạng xã hội; Oauth; Giao thc truyền thông; Facebook 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 trlên phổ biến. Bài toán đặt ra là cần có hệ thống có thể cp nht thông tin từ mt hthống bán hàng, hay từ mt hthng quản lý nội dùng nào đó gửi nên mạng xã hội nhanh chóng. Hệ thng phi có thể ddà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: Gii thiu vđề tài luận văn, ý nghĩa và tính khả thi của đề tài. Chƣơng 1. Mng xã hội Facebook và cách phát triển ng dng Facebook: Trình bày vmạng xã hội Facebook và các mạng xã hội phbiến hiện này. Chƣơng 2. Xác thực và xác thực bng 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 mOpen 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 hthng. Kết quđạt được khi chy thhthng. Kết lun: Trình bày tóm tắt các kết quđạt được. Hướng mrộng, phát triển hthng.

Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

  • Upload
    voliem

  • View
    219

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

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;

Facebook

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.

Page 2: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một 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

Page 3: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

ư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.

Page 4: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

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

Page 5: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

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.

Page 6: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

- 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

Page 7: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

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.

Page 8: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

*) 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ý

Page 9: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

Để đă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;

Page 10: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

} //~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;

Page 11: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

$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

Page 12: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thố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).

Page 13: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

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.

Page 14: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

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.

Page 15: Phát triển ứng dụng kết nối Facebook trên cơrepository.vnu.edu.vn/bitstream/VNU_123/8002/1/00050001541.pdf · thông tin trên mạng xã hội ... một hệ thống

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