รับโทเค็นการเข้าถึงและสิทธิ์การอนุญาต

คู่มือนี้จะอธิบายวิธีใช้หน้าต่างการอนุญาตเพื่อรับโทเค็นการเข้าถึงผู้ใช้ Instagram แบบระยะสั้น และสิทธิ์การอนุญาตจากผู้ใช้ Instagram

ขั้นตอนที่ 1: รับการอนุญาต

หน้าต่างการอนุญาตช่วยให้ผู้ใช้แอพสามารถมอบสิทธิ์การอนุญาตและโทเค็นการเข้าถึงผู้ใช้ Instagram แบบระยะสั้นให้กับแอพของคุณได้ หลังจากที่ผู้ใช้เข้าสู่ระบบและเลือกข้อมูลที่อนุญาตให้แอพของคุณเข้าถึงได้แล้ว เราจะเปลี่ยนเส้นทางผู้ใช้ไปยังแอพของคุณ พร้อมระบุรหัสการให้อนุญาต ซึ่งคุณสามารถนำไปแลกเปลี่ยนเป็นโทเค็นการเข้าถึงแบบระยะสั้นได้

หากต้องการเริ่มกระบวนการ ให้เรียกหน้าต่างการอนุญาตและแสดงต่อผู้ใช้:

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

พารามิเตอร์สตริงการสืบค้น

ต้องใช้พารามิเตอร์ทั้งหมดยกเว้น state

พารามิเตอร์ค่าตัวอย่างคำอธิบาย

client_id
ต้องมี
สตริงตัวเลข

990602627938098

ID ของแอพ Instagram ของคุณที่แสดงในแดชบอร์ดของแอพ > สินค้า > Instagram > Basic Display

redirect_uri
ต้องมี
สตริง

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

URI ที่เราจะเปลี่ยนเส้นทางผู้ใช้หลังจากผู้ใช้อนุญาตหรือปฏิเสธคำขอสิทธิ์การอนุญาต ตรวจสอบว่า URI นี้เหมือนกันกับ URI ฐานในรายการ URI oAuth ที่ถูกต้องทุกประการ โปรดจำไว้ว่าแดชบอร์ดของแอพอาจเพิ่มเครื่องหมายทับตามหลัง URI ของคุณ ดังนั้นเราจึงขอแนะนำให้คุณตรวจสอบยืนยันด้วยการตรวจสอบรายการ

response_type
ต้องมี
สตริง

code

กำหนดค่านี้ให้เป็น code

scope
รายการที่คั่นด้วยเครื่องหมายจุลภาคหรือช่องว่างที่ต้องระบุ

user_profile,user_media

รายการสิทธิ์การอนุญาตที่คั่นด้วยเครื่องหมายจุลภาคหรือคั่นด้วยช่องว่างที่เข้ารหัส URL เพื่อส่งคำขอจากผู้ใช้แอพ ต้องมี user_profile

state
สตริง

1

ค่าทางเลือกซึ่งระบุสถานะของเฉพาะเซิร์ฟเวอร์ เช่น คุณสามารถใช้ค่านี้เพื่อป้องกันปัญหา CSRF ได้ เราจะเพิ่มพารามิเตอร์นี้และค่าเมื่อเปลี่ยนเส้นทางผู้ใช้กลับมาหาคุณ

ตัวอย่าง URL หน้าต่างการอนุญาต

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

การอนุญาตสำเร็จ

หากการอนุญาตสำเร็จ เราจะเปลี่ยนเส้นทางผู้ใช้มาที่ redirect_uri ของคุณ และส่งต่อรหัสการให้อนุญาตให้คุณผ่านพารามิเตอร์สตริงการสืบค้น code บันทึกรหัสดังกล่าวเพื่อให้แอพของคุณแลกเปลี่ยนเป็นโทเค็นการเข้าถึงผู้ใช้ Instagram แบบระยะสั้นได้

รหัสการให้อนุญาตจะมีอายุ 1 ชั่วโมง และสามารถใช้ได้ครั้งเดียวเท่านั้น

ตัวอย่างการเปลี่ยนเส้นทางเมื่อการยืนยันตัวตนสำเร็จแล้ว

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

โปรดทราบว่าจะมีการผูก #_ ไปยังปลายทางของ URI การเปลี่ยนเส้นทาง แต่ไม่ได้เป็นส่วนหนึ่งของรหัส ดังนั้นให้ตัดออก

การอนุญาตที่ถูกยกเลิก

หากผู้ใช้ยกเลิกขั้นตอนการอนุญาต เราจะเปลี่ยนเส้นทางผู้ใช้ไปที่ redirect_uri ของคุณและเพิ่มพารามิเตอร์ข้อผิดพลาดต่อไปนี้ หากเกิดข้อผิดพลาดในสถานการณ์เหล่านี้ คุณมีหน้าที่รับผิดชอบในการแก้ไข พร้อมแสดงข้อความที่เหมาะสมให้กับผู้ใช้ของคุณ

พารามิเตอร์ค่า

error

access_denied

error_reason

user_denied

error_description

The+user+denied+your+request

ตัวอย่างการเปลี่ยนเส้นทางการอนุญาตที่ถูกยกเลิก

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

ขั้นตอนที่ 2: แลกเปลี่ยนรหัสเป็นโทเค็น

เมื่อคุณได้รับรหัส ให้แลกเปลี่ยนรหัสเป็นโทเค็นการเข้าถึงแบบระยะสั้นโดยการส่งคำขอ POST ไปยังตำแหน่งข้อมูลต่อไปนี้:

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

พารามิเตอร์เนื้อความ

ให้เพิ่มพารามิเตอร์นี้ลงในเนื้อความคำขอ POST ของคุณ

พารามิเตอร์ค่าตัวอย่างคำอธิบาย

client_id
ต้องมี
สตริงตัวเลข

990602627938098

ID ของแอพ Instagram ของคุณที่แสดงในแดชบอร์ดของแอพ > สินค้า > Instagram > Basic Display

client_secret
ต้องมี
สตริง

a1b2C3D4

ข้อมูลลับของแอพ Instagram คุณที่แสดงในแดชบอร์ดของแอพ > สินค้า > Instagram > Basic Display

code
ต้องมี
สตริง

AQBx-hBsH3...

รหัสการให้อนุญาตที่เราส่งต่อให้คุณในพารามิเตอร์ code เมื่อเปลี่ยนเส้นทางผู้ใช้ไปที่ redirect_uri ของคุณ

grant_type
ต้องมี
สตริง

authorization_code

กำหนดค่านี้ให้เป็น authorization_code

redirect_uri
ต้องมี
สตริง

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

URI การเปลี่ยนเส้นทางที่คุณส่งต่อให้เราเมื่อคุณเปลี่ยนเส้นทางผู้ใช้ไปที่หน้าต่างการอนุญาตของเรา URI นี้จะต้องเป็น URI เดียวกัน ไม่เช่นนั้นเราจะปฏิเสธคำขอ

ตัวอย่างคำขอ

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

ตัวอย่างเมื่อการตอบกลับสำเร็จ

หากทำสำเร็จ API จะส่งคืนเพย์โหลด JSON ที่มีโทเค็นการเข้าถึงแบบระยะสั้นและ ID ผู้ใช้ของผู้ใช้แอพ

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

บันทึกค่า access_token ค่านี้เป็นโทเค็นการเข้าถึงผู้ใช้ Instagram แบบระยะสั้นของผู้ใช้ ซึ่งแอพของคุณสามารถใช้เพื่อเข้าถึงตำแหน่งข้อมูล API ของ Instagram Basic Display ได้

ตัวอย่างเมื่อการตอบกลับถูกปฏิเสธ

หากคำขอผิดปกติในลักษณะใดก็ตาม API จะส่งคืนข้อผิดพลาด

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