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 Instagram và các quyền từ người dùng Instagram.
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ền và Mã 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
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ả |
---|---|---|
|
| 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. |
|
| 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. |
|
| Đặt giá trị này thành |
|
| 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. |
|
| 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. |
https://api.instagram.com/oauth/authorize ?client_id=990602627938098 &redirect_uri=https://socialsizzle.herokuapp.com/auth/ &scope=user_profile,user_media &response_type=code
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.
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.
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ị |
---|---|
|
|
|
|
|
|
https://socialsizzle.herokuapp.com/auth/?error=access_denied &error_reason=user_denied &error_description=The+user+denied+your+request
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
Đư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ả |
---|---|---|
|
| 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. |
|
| 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. |
|
| Mã ủy quyền mà chúng tôi chuyển cho bạn trong thông số |
|
| Đặt giá trị này thành |
|
| 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. |
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...
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.
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" }