Facebook Graph API: Tổng Quan, Cấu Trúc và Hướng Dẫn Sử Dụng Chi Tiết

Facebook Graph API là một công cụ mạnh mẽ cho phép các nhà phát triển tương tác với nền tảng Facebook một cách có lập trình. Bài viết này sẽ cung cấp một cái nhìn tổng quan về Facebook Graph API, cấu trúc của nó, và hướng dẫn chi tiết cách sử dụng nó để truy xuất và thao tác dữ liệu trên Facebook.

1. Facebook Graph API là gì?

Để hiểu rõ về Facebook Graph API, chúng ta cần bắt đầu với khái niệm API.

1.1. API là gì?

API (Application Programming Interface) là giao diện lập trình ứng dụng, đóng vai trò là cầu nối giữa các ứng dụng và thư viện khác nhau. Nó cho phép các ứng dụng giao tiếp và trao đổi dữ liệu với nhau. Các nền tảng lớn như Windows, Google, và Twitter đều cung cấp API riêng, cho phép nhà phát triển tận dụng các tính năng và dữ liệu sẵn có trên máy chủ của họ để xây dựng ứng dụng.

1.2. Facebook API là gì?

Facebook API là một nền tảng được cung cấp bởi Facebook, giúp các nhà phát triển tạo ứng dụng một cách dễ dàng và an toàn. Nó đảm bảo rằng các ứng dụng không can thiệp quá sâu vào hệ thống của Facebook, đồng thời cung cấp các công cụ để truy cập và sử dụng dữ liệu người dùng một cách có kiểm soát.

Thông qua Facebook API, các ứng dụng có thể lấy thông tin người dùng như danh sách bạn bè, thông tin cá nhân, ảnh đại diện, v.v., tất nhiên là khi người dùng cho phép truy cập vào trang cá nhân của họ.

1.3. Facebook Graph API là gì?

Thuật ngữ “Graph” ở đây đề cập đến đồ thị, một cấu trúc dữ liệu được sử dụng để mô tả mối quan hệ giữa các thực thể. Facebook xem các mối quan hệ giữa người dùng, trang, sự kiện và các đối tượng khác trên nền tảng của mình như một “Đồ thị xã hội” (Social Graph).

Facebook Graph API là phương thức chính để truy xuất dữ liệu từ và tải dữ liệu vào đồ thị xã hội của Facebook. Đây là một HTTP API cấp thấp cho phép bạn truy vấn dữ liệu, đăng trạng thái, tải ảnh lên và thực hiện nhiều tác vụ khác.

Biểu đồ mô tả quan hệ giữa các thực thể trên FacebookBiểu đồ mô tả quan hệ giữa các thực thể trên Facebook

2. Cấu trúc của Facebook Graph API

Graph API được xây dựng dựa trên ý tưởng “đồ thị xã hội”, đại diện cho thông tin trên Facebook thông qua ba thành phần chính:

  1. Nodes (Nút): Đại diện cho các đối tượng riêng lẻ như người dùng, ảnh, trang, bình luận, v.v.
  2. Edges (Cạnh): Đại diện cho các kết nối giữa các đối tượng. Ví dụ: kết nối giữa một ảnh và trang chứa ảnh đó, hoặc giữa một bình luận và bức ảnh mà nó được bình luận.
  3. Fields (Trường): Đại diện cho các thuộc tính hoặc dữ liệu của một đối tượng. Ví dụ: tên, ngày sinh của người dùng hoặc tên của một trang.

Khi sử dụng Graph API, bạn sẽ:

  1. Sử dụng nodes để lấy dữ liệu về một đối tượng cụ thể.
  2. Sử dụng edges để lấy tập hợp các đối tượng được kết nối với một node.
  3. Sử dụng fields để chỉ định dữ liệu cụ thể bạn muốn nhận trong phản hồi từ Facebook.

2.1. HTTP

Graph API dựa trên giao thức HTTP, có nghĩa là nó có thể được sử dụng với bất kỳ ngôn ngữ lập trình nào có thư viện HTTP, chẳng hạn như cURL và urllib. Bạn thậm chí có thể sử dụng Graph API trực tiếp trong trình duyệt của mình.

Ví dụ: sentayho.com.vn/facebook/picture?redirect=false tương đương với việc thực hiện yêu cầu cURL sau:

curl -i -X GET "https://graph.facebook.com/facebook/picture?redirect=false&access_token={valid-access-token-goes-here}"

2.2. Access Token (Mã truy cập)

Bạn sẽ thấy tham số access_token trong URL ví dụ trên. Hầu hết các yêu cầu tới Graph API đều yêu cầu access token. Cách dễ nhất để lấy access token là yêu cầu người dùng đăng nhập vào Facebook thông qua ứng dụng của bạn.

2.3. URL Lưu Trữ

Hầu hết các yêu cầu đều được gửi đến URL lưu trữ sentayho.com.vn. Chỉ có video tải lên sử dụng sentayho.com.vn.

2.4. Object ID

Mỗi node có một ID duy nhất để truy cập thông qua Graph API. Để lấy thông tin về một node, bạn cần truy vấn trực tiếp đến ID của node đó:

GET sentayho.com.vn/{node-id}

Nếu bạn muốn lấy dữ liệu cụ thể (fields) về một node, bạn có thể thêm tham số fields và chỉ định trường mà bạn muốn có trong phản hồi trả về. Ví dụ: để lấy email của một đối tượng (node), bạn có thể truy vấn như sau:

GET sentayho.com.vn/{node-id}?fields=email

Hầu hết các node đều có edges (cạnh). Nó có thể trả về tập hợp các đối tượng được kết nối với node đó. Để truy vấn một cạnh, bạn có thể sử dụng cả ID node và tên cạnh. Ví dụ: để truy vấn cạnh photos của một node:

GET sentayho.com.vn/{node-id}/photos

Một số node cho phép bạn cập nhật trường bằng thao tác POST. Ví dụ: nếu bạn là quản trị viên của một trang Facebook, bạn có thể cập nhật trường descriptions như sau:

POST sentayho.com.vn/{node-id}?description=haha

Bạn cũng có thể xóa một node bằng cách thực hiện thao tác DELETE trên ID node:

DELETE sentayho.com.vn/{node-id}

3. Hướng dẫn sử dụng Graph API

Để bắt đầu sử dụng Graph API, bạn cần truy cập vào trang dành cho nhà phát triển của Facebook: sentayho.com.vn/. Nếu bạn chưa có ứng dụng trên Facebook, hãy tạo một ứng dụng mới.

Tiếp theo, truy cập vào Graph API Explorer bằng cách chọn More > Tools > Graph API Explorer hoặc truy cập trực tiếp vào liên kết: sentayho.com.vn/tools/explorer/.

Giao diện Graph API Explorer trên FacebookGiao diện Graph API Explorer trên Facebook

Trong trang này, bạn sẽ thấy 4 phần quan trọng cần chú ý:

  1. Access Token: Mã gửi lên server. Nếu bạn đang đăng nhập một tài khoản Facebook, giá trị này sẽ được hiển thị mặc định cho tài khoản đó. Mỗi ứng dụng sẽ có một mã mặc định khác nhau.
  2. URL gửi lên server: Địa chỉ URL để gửi yêu cầu và nhận thông tin trả về. Mặc định là /me?fields=id,name.
  3. Chọn Fields: Sau khi nhấn nút Submit, ở bên trái màn hình, bạn có thể chọn các trường (fields) tùy thích để thử nghiệm.
  4. Kết quả trả về: Bên phải màn hình là kết quả trả về sau khi bạn gửi yêu cầu.

Thông thường, ứng dụng chỉ được phép truy cập vào public profile của người dùng. Nếu bạn muốn truy vấn thêm thông tin, bạn cần cấp thêm quyền bằng cách nhấp vào nút Get Token > Get User Access Token. Một cửa sổ popup sẽ hiển thị danh sách các quyền như user_friends (lấy danh sách bạn bè), user_birthday (lấy ngày sinh của người dùng), user_link (lấy liên kết trang cá nhân), v.v. Khi cấp một quyền nào đó, một hộp thoại sẽ xuất hiện với nội dung giải thích quyền đó.

Hộp thoại yêu cầu quyền truy cập danh sách bạn bè trên FacebookHộp thoại yêu cầu quyền truy cập danh sách bạn bè trên Facebook

Ví dụ trên là khi bạn cấp quyền truy cập danh sách bạn bè. Sau khi cấp quyền, bạn chọn trường friends và gửi yêu cầu, bạn sẽ nhận được danh sách bạn bè cùng sử dụng ứng dụng với bạn.

4. Tìm hiểu sâu hơn về Access Token

Khi một người kết nối với một ứng dụng bằng cách Đăng nhập vào Facebook và đồng ý cấp quyền truy cập cho ứng dụng, ứng dụng sẽ nhận được một mã truy cập tạm thời của người dùng đó.

Mã truy cập là một chuỗi xác định người dùng, ứng dụng hoặc trang. Ứng dụng có thể sử dụng mã này để thực hiện các lệnh gọi tới Graph API.

Bạn có thể lấy mã truy cập bằng nhiều phương pháp khác nhau. Mã này bao gồm thông tin về thời gian hết hạn và ứng dụng đã tạo mã đó. Vì lý do bảo mật, hầu hết các lệnh gọi API trên Facebook đều yêu cầu mã truy cập. Có nhiều loại mã truy cập khác nhau để hỗ trợ các trường hợp sử dụng khác nhau.

Có 3 loại mã truy cập chính:

  • Mã truy cập người dùng: Dùng để thay mặt một người sửa đổi hoặc ghi dữ liệu Facebook của người đó.
  • Mã truy cập ứng dụng: Dùng để đăng hành động trong Open Graph.
  • Mã truy cập trang: Dùng để sửa đổi dữ liệu thuộc về một trang Facebook.

Mã truy cập cũng có hai loại thời hạn:

  • Mã ngắn hạn: Thường có thời hạn khoảng 1 đến 2 giờ.
  • Mã dài hạn: Thường có thời hạn khoảng 60 ngày.

Tuy nhiên, bạn không nên dựa vào các thời hạn này, vì chúng có thể thay đổi mà không cần thông báo hoặc có thể hết hạn sớm hơn dự kiến. Mã truy cập được tạo bằng cách đăng nhập web thường là mã ngắn hạn, nhưng bạn có thể chuyển đổi chúng thành mã dài hạn bằng cách thực hiện lệnh gọi API phía máy chủ cùng với secret key của ứng dụng.

Sau khi có mã truy cập, bạn có thể sử dụng nó để thực hiện các lệnh gọi từ ứng dụng di động, trình duyệt web hoặc từ máy chủ của bạn đến máy chủ của Facebook. Nếu mã được lấy trên ứng dụng, bạn có thể chuyển mã đó xuống máy chủ và sử dụng trong lệnh gọi máy chủ đến máy chủ. Hiện tại, việc sử dụng HTTPS là bắt buộc để lấy được mã truy cập.

Kết luận

Facebook Graph API là một công cụ mạnh mẽ cho phép các nhà phát triển tương tác với nền tảng Facebook một cách linh hoạt và có lập trình. Bằng cách hiểu rõ cấu trúc và cách sử dụng API này, bạn có thể xây dựng các ứng dụng sáng tạo và hữu ích, tận dụng tối đa tiềm năng của mạng xã hội lớn nhất thế giới.

Tài liệu tham khảo:

  1. https://developers.facebook.com/docs/graph-api/using-graph-api
  2. https://developers.facebook.com/docs/facebook-login/access-tokens/