Tài liệu này đã được cập nhật.
Bản dịch sang Tiếng Việt chưa hoàn tất.
Cập nhật bằng tiếng Anh: 5 tháng 10, 2021

Lấy mã truy cập và quyền

Hướng dẫn này giải thích cách sử dụng Cửa sổ ủy quyền để lấy Mã truy cập ngắn hạn của người dùng Instagramcác quyền từ người dùng Instagram.

Bước 1: Xin ủy quyền

Cửa sổ ủy quyền cho phép người dùng ứng dụng cấp cho ứng dụng của bạn các quyềnMã truy cập ngắn hạn của người dùng Instagram. Sau khi người dùng đăng nhập và chọn những dữ liệu sẽ cho phép ứng dụng của bạn truy cập, chúng tôi sẽ chuyển hướng người dùng đến ứng dụng đó và thêm Mã ủy quyền mà bạn có thể dùng để đổi lấy mã truy cập ngắn hạn.

Để bắt đầu quy trình này, hãy tải Cửa sổ ủy quyền và hiển thị với người dùng:

https://api.instagram.com/oauth/authorize
  ?client_id={instagram-app-id}
  &redirect_uri={redirect-uri}
  &scope={scope}
  &response_type=code
  &state={state}        //Optional

Thông số chuỗi truy vấn

Bắt buộc phải có tất cả các thông số ngoại trừ state.

Thông sốVí dụ về giá trịMô tả

client_id
Bắt buộc
Chuỗi số

990602627938098

ID ứng dụng của bạn trên Instagram hiển thị trong Bảng điều khiển ứng dụng > Sản phẩm > Instagram > Basic Display.

redirect_uri
Bắt buộc
Chuỗi

https://socialsizzle.herokuapp.com/auth/

URI mà chúng tôi sẽ chuyển hướng người dùng đến đó sau khi họ cho phép hoặc từ chối yêu cầu cấp quyền. Hãy đảm bảo URI này khớp chính xác với một trong những URI cơ sở trong danh sách các URI oAuth hợp lệ. Lưu ý rằng Bảng điều khiển ứng dụng có thể đã thêm một dấu gạch chéo sau cùng vào URI của bạn, do đó, bạn nên xác minh bằng cách kiểm tra danh sách.

response_type
Bắt buộc
Chuỗi

code

Đặt giá trị này thành code.

scope
Bắt buộc
Danh sách được phân tách bằng dấu phẩy hoặc khoảng trắng

user_profile,user_media

Danh sách được phân tách bằng dấu phẩy hoặc danh sách được phân tách bằng khoảng trắng mã hóa URL có các quyền cần yêu cầu từ người dùng ứng dụng. user_profile là bắt buộc.

state
Chuỗi

1

Giá trị tùy chọn cho biết trạng thái cụ thể theo máy chủ. Ví dụ: bạn có thể dùng giá trị này để bảo vệ trước các vấn đề CSRF. Chúng tôi sẽ kèm theo thông số và giá trị này khi chuyển hướng người dùng trở lại phía bạn.

Ví dụ về URL cửa sổ ủy quyền

https://api.instagram.com/oauth/authorize
  ?client_id=990602627938098
  &redirect_uri=https://socialsizzle.herokuapp.com/auth/
  &scope=user_profile,user_media
  &response_type=code

Ủy quyền thành công

Nếu ủy quyền thành công, chúng tôi sẽ chuyển hướng người dùng đến redirect_uri của bạn và chuyển cho bạn Mã ủy quyền thông qua thông số chuỗi truy vấn code. Hãy ghi lại mã này để ứng dụng của bạn có thể đổi mã lấy Mã truy cập ngắn hạn của người dùng Instagram.

Mã ủy quyền có hiệu lực trong 1 giờ và chỉ dùng được một lần.

Ví dụ về chuyển hướng khi xác thực thành công

https://socialsizzle.herokuapp.com/auth/?code=AQBx-hBsH3...#_

Lưu ý rằng #_ sẽ được thêm vào cuối URI chuyển hướng, chứ không nằm trong mã nên hãy lược bỏ phần này đi.

Ủy quyền bị hủy

Nếu người dùng hủy quy trình ủy quyền, chúng tôi sẽ chuyển hướng người dùng đến redirect_uri của bạn và thêm các thông số lỗi sau đây. Bạn có trách nhiệm giảm thiểu sự cố trong trường hợp này và hiển thị thông báo phù hợp với người dùng.

Thông sốGiá trị

error

access_denied

error_reason

user_denied

error_description

The+user+denied+your+request

Ví dụ về chuyển hướng khi ủy quyền bị hủy

https://socialsizzle.herokuapp.com/auth/?error=access_denied
  &error_reason=user_denied
  &error_description=The+user+denied+your+request

Bước 2: Đổi mã lấy mã truy cập

Sau khi nhận được mã, hãy đổi mã này lấy mã truy cập ngắn hạn bằng cách gửi yêu cầu POST đến điểm cuối sau:

POST https://api.instagram.com/oauth/access_token

Thông số phần nội dung

Đưa các thông số sau đây vào phần nội dung yêu cầu POST của bạn.

Thông sốVí dụ về giá trịMô tả

client_id
Bắt buộc
Chuỗi số

990602627938098

ID ứng dụng của bạn trên Instagram hiển thị trong Bảng điều khiển ứng dụng > Sản phẩm > Instagram > Basic Display.

client_secret
Bắt buộc
Chuỗi

a1b2C3D4

Khóa bí mật của ứng dụng trên Instagram hiển thị trong Bảng điều khiển ứng dụng > Sản phẩm > Instagram > Basic Display.

code
Bắt buộc
Chuỗi

AQBx-hBsH3...

Mã ủy quyền mà chúng tôi chuyển cho bạn trong thông số code khi chuyển hướng người dùng đến redirect_uri của bạn.

grant_type
Bắt buộc
Chuỗi

authorization_code

Đặt giá trị này thành authorization_code.

redirect_uri
Bắt buộc
Chuỗi

https://socialsizzle. heroku.com/auth/

URI chuyển hướng mà bạn đã chuyển cho chúng tôi khi bạn đưa người dùng đến Cửa sổ ủy quyền. URI này phải như cũ, nếu không, chúng tôi sẽ từ chối yêu cầu.

Ví dụ về yêu cầu

curl -X POST \
  https://api.instagram.com/oauth/access_token \
  -F client_id=990602627938098 \
  -F client_secret=eb8c7... \
  -F grant_type=authorization_code \
  -F redirect_uri=https://socialsizzle.herokuapp.com/auth/ \
  -F code=AQBx-hBsH3...

Ví dụ về phản hồi thành công

Nếu thành công, API sẽ trả lại phần tải dữ liệu JSON chứa mã truy cập ngắn hạn và ID người dùng của người dùng ứng dụng.

{
  "access_token": "IGQVJ...",
  "user_id": 17841405793187218
}

Ghi lại giá trị access_token. Đây là Mã truy cập ngắn hạn của người dùng Instagram lấy từ người dùng. Ứng dụng của bạn có thể dùng mã này để truy cập vào các điểm cuối API Instagram Basic Display.

Ví dụ về phản hồi bị từ chối

Nếu yêu cầu bị sai định dạng, API sẽ trả về lỗi.

{
  "error_type": "OAuthException",
  "code": 400,
  "error_message": "Matching code was not found or was already used"
}