ได้รับ 403/401 (สิทธิ์และสโคป)
การแก้ปัญหา
403
401
สิทธิ์
สโคป
อาการ
ฟลว์การอนุมัติสำเร็จแล้ว แต่เมื่อเรียก API กลับได้รับ 401 หรือ 403
ฟลว์การอนุมัติสำเร็จแล้ว แต่เมื่อเรียก API กลับได้รับ 401 หรือ 403
ความแตกต่างระหว่าง 401 กับ 403
| โค้ด | ความหมาย |
|---|---|
| 401 Unauthorized | ข้อมูลรับรองไม่ถูกต้อง ใช้ไม่ได้ หรือหมดอายุ เป็นปัญหาของโทเคน |
| 403 Forbidden | ยืนยันตัวตนสำเร็จ แต่ไม่มีสิทธิ์สำหรับการดำเนินการนั้น เป็นปัญหาของสโคป บทบาท หรือสิทธิ์ความเป็นเจ้าของ |
กรณีทั่วไปของ 401 และการรับมือ
- โทเคนหมดอายุ(
expired_token)→ ต่ออายุด้วย refresh token - โทเคนถูกเพิกถอนแล้ว(ผู้ใช้ยกเลิกการเชื่อมต่อ เป็นต้น)→ ฟลว์การอนุมัติซ้ำ
- รูปแบบของ Authorization header ไม่ถูกต้อง →
Bearer(มีช่องว่างครึ่งความกว้าง)+ โทเคน - ใช้ environment ผิด(ใช้โทเคน production ใน staging)→ ตรวจสอบ environment
กรณีทั่วไปของ 403 และการรับมือ
- สโคปไม่เพียงพอ(
insufficient_scope)→ เพิ่มสโคปที่จำเป็นแล้วอนุมัติซ้ำ - ไม่มีสิทธิ์เข้าถึงร้านค้า → ตรวจสอบว่าไม่ได้เรียกทรัพยากรของร้านค้าอื่นนอกจากร้านที่แอปเชื่อมต่อไว้
- สโคปประเภท User ยังไม่ผ่านการตรวจสอบ(
app_not_approved)→ ยื่นขอตรวจสอบ (ดูบทความแยก) - สิทธิ์ของบทบาทไม่เพียงพอ → ผู้ใช้ที่เชื่อมต่อในตอนนั้นไม่มีบทบาทที่จำเป็น (เช่น เจ้าของ)
- ข้อจำกัดของแพลน(
plan_limit_exceeded)→ อัปเกรดแพลนของฝั่งร้านค้า
ขั้นตอนการแยกแยะสาเหตุ
- ตรวจสอบ
error.codeและmessageใน response - บันทึก
X-RR-Request-Idลง log - หากเป็น 401 ให้เรียก
/v1/meเพื่อตรวจสอบว่าโทเคนเองยังใช้งานได้หรือไม่ (ถ้าสำเร็จแสดงว่าโทเคนโอเค หากขั้นต่อไปเป็น 403 แสดงว่าเป็นปัญหาสิทธิ์) - หากเป็น 403 ให้ตรวจสอบ
scopeที่อยู่ในโทเคนปัจจุบัน (/v1/oauth/introspect) - หากไม่มีสโคปที่จำเป็นอยู่ ให้อนุมัติซ้ำ
วิธีตรวจสอบสโคป
curl -X POST https://receiptroller.io/oauth/introspect \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "token=$ACCESS_TOKEN&client_id=$CLIENT_ID&client_secret=$SECRET"
→ {
"active": true,
"scope": "store.read receipt.read",
"client_id": "...",
"exp": 1745740001
}
คู่มือที่เกี่ยวข้อง
วันที่เผยแพร่: 2569-04-27
วันที่อัปเดต: 2569-07-06
หมวดหมู่
แท็ก
API (22)
OAuth (15)
Android (10)
iOS (9)
Webhook (8)
api (7)
oauth (5)
getting-started (4)
การลงทะเบียนแอป (4)
การแก้ปัญหา (4)
บทความที่เกี่ยวข้อง
-
พอร์ทัลนักพัฒนาไม่แสดงเมื่อยังใช้แพลนฟรีขั้นตอนการตรวจสอบเมื่อพอร์ทัลนักพัฒนาของ ReceiptRoller ไม่แสดง อธิบายวิธีรับมือเมื่อใช้แพลนฟรี การสลับบัญชีธุรกิจ และช่วงเวลาที่การแสดงผลมีผล
-
ขอโทเคนไม่ได้ (ข้อผิดพลาดการยืนยันตัวตน)การแยกแยะสาเหตุเมื่อขอ access token ไม่ได้ อธิบายข้อผิดพลาดทั่วไป เช่น invalid_client, invalid_grant, redirect_uri_mismatch และวิธีรับมือ
-
สโคปประเภท User ส่งคืน app_not_approvedขั้นตอนการตรวจสอบเมื่อใช้สโคปประเภท User แล้วได้รับข้อผิดพลาด app_not_approved อธิบายขั้นตอนการพัฒนาในโหมด sandbox การยื่นขอตรวจสอบ และการนำ sandbox ขึ้นสู่ production
-
Webhook ไม่มาถึงการแยกแยะสาเหตุเมื่อ Webhook ไม่มาถึง endpoint ผู้รับ อธิบายขั้นตอนการตรวจสอบตามลำดับ ทั้งการตั้งค่า endpoint การสมัครรับ event ความสามารถในการเข้าถึง ความล้มเหลวในการตรวจสอบลายเซ็น และไฟร์วอลล์