+2

Lấy dữ liệu bài viết của một tài khoản instagram với Instagram Basic API

Vừa qua mình có làm một task nho nhỏ về việc cập nhật thông tin bài viết của một tài khoản instagram xác định. Trong quá trình làm mình tìm thấy 1 vài hướng và cuối cùng chốt lại sử dụng Instagram Basic API. Bài viết là sự tổng hợp những gì bản thân mình đã tìm hiểu trong quá trình làm task

I. Giới thiệu

Instagram Basic Display là một HTTP-based API được xây dựng nhằm cung cấp một giao diện cho phép các ứng dụng có thể lấy thông tin về tài khoản của người dùng như bài viết, ảnh, video hay album.

1. Các API thành phần

Instagram Basic Display bao gồm 2 API thành phần chính

  • api.instagram.com: sử dụng để xác thực và lấy token của người dùng
  • graph.instagram.com: sử dụng để lấy token dài hạn cũng như thông tin của người dùng và thông tin của người dùng

2. Các quyền cần thiết

a. instagram_graph_user_profile

Quyền instagram_graph_user_profile cho phép ứng dụng có thể đọc được các thông tin cơ bản của một tài khoản người dùng bao gồm

  • id
  • username
  • account_type
  • media_count

Quyền này cũng cần thiết để truy cập được tới media của người dùng

b. instagram_graph_user_media

Quyền instagram_graph_user_media cho phép ứng dụng đọc các thông tin media của người dùng như ảnh, video hay album cũng như các edge liên quan.

Quyền này cần được cấp cùng với quyền instagram_graph_user_profile

Các trường có thể có của một media bao gồm

  • id
  • caption
  • media_type (IMAGE, VIDEO hay CAROUSEL_ALBUM)
  • media_url
  • permalink
  • thumbnail_url (chỉ cho kiểu VIDEO)
  • timestamp
  • username

3. Rate Limit

Ứng dụng bị hạn chế theo giờ là 200 * số lượng người dùng

II. Sử dụng cơ bản

1. Thiết lập ứng dụng

Việc đầu tiên, API này cung cấp giao diện cho các ứng dụng nên đương nhiên là phải khởi tạo một ứng dụng đã. Truy cập tới trang Meta for developers. Nếu chưa có tài khoản developer hãy tạo mới 1 cái.

Vào màn hình My Apps

image.png

Tiếp theo là khởi tạo một ứng dụng. Có thể chọn không có cho linh hoạt vì chúng ta chỉ sử dụng Instagram Basic Display thôi.

image.png

Sau khi nhập xong các thông tin cần thiết, tại màn ứng dụng, chọn instagram basic display

image.png

Tiếp theo điền các thông tin cần thiết cho ứng dụng ở Settings > Basic

image.png

Thêm một platform (ở đây mình chọn web)

image.png

Bây giờ thì khởi tạo 1 ứng dụng instagram basic display

image.png

Điền các url cần thiết

image.png

Cấp các quyền cần thiết

image.png

2. Tạo instagram basic display tester

Sau khi đã điền xong các thông tin cần thiết, có thể tạo tester để bắt đầu sử dụng api. Tại màn hình quản lý, vào Roles > Roles

image.png

Tại phần Instagram Testers, khởi tạo một tester cho ứng dụng (khác tài khoản developer)

image.png

Đăng nhập vào tài khoản tester, vào Settings > Apps and Websites > Tester Invites và chấp nhận.

image.png

3. Khởi tạo access token

Việc setup đã xong, giờ là lúc lấy access token để làm việc rồi. Sử dụng tài khoản tester truy cập tới đường dẫn

https://api.instagram.com/oauth/authorize
  ?client_id={instagram-app-id}
  &redirect_uri={redirect-uri}
  &scope={scope}
  &response_type=code
  &state={state} (có thể có hoặc không)

Tại màn hình cấp quyền chọn Allow

image.png

Nếu thành công chúng ta sẽ có một code trả về trên đường dẫn redirect

{redirect_uri}?code={authorization_code}

Sử dụng code vừa rồi để lấy một access token hợp lệ

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id={client_id} \
  -F client_secret={client_secret} \
  -F grant_type=authorization_code \
  -F redirect_uri={redirect_uri} \
  -F code={authorization_code}

Nếu thành công, ta sẽ có access token trong dữ liệu gửi về dưới dạng

{
  "access_token": "{access_token}",
  "user_id": {user_id}
}

Token này hoàn toàn có thể sử dụng được rồi. Tuy nhiên để ứng dụng có thể sử dụng lâu dài, ta sẽ lấy một token dài hạn hơn

curl -i -X GET "https://graph.instagram.com/access_token
  ?grant_type=ig_exchange_token
  &client_secret={instagram-app-secret}
  &access_token={short-lived-access-token}"

Nếu thành công, ta sẽ có một token mới với thời hạn 60 ngày

{
  "access_token":"{long-lived-user-access-token}",
  "token_type": "bearer",
  "expires_in": 5183944  // Number of seconds until token expires
}

Token này có thể refesh sau 1 ngày và trước khi hết hạn

curl -i -X GET "https://graph.instagram.com/refresh_access_token
  ?grant_type=ig_refresh_token
  &access_token={long-lived-access-token}"

4. Lấy thông tin cần thiết

Sau khi đã có token thì công việc còn lại khá là đơn giản. Chúng ta sẽ sử dụng graph.instagram.api để lấy thông tin của người dùng

a. Lấy thông tin profile

Thông tin cơ bản của người dùng có thể lấy tại

GET /me?fields={fields}&access_token={access-token}

Xem thêm về user tại đây

image.png

b. Lấy thông tin media

API:

GET /me/media?fields={fields}&access_token={access-token}

Xem thêm về các fields tại đây

image.png

c. Lấy thông tin các item trong album

Đối với các media_type CAROUSEL_ALBUM sẽ có nhiều media, do đó có thể lấy thông tin các media có trong album tại

GET /{media-id}/children

III. References

https://developers.facebook.com/docs/instagram-basic-display-api/


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí