ข้ามไปยังเนื้อหาหลัก
s.id Logo
ดู Markdown

การรับรองความถูกต้อง

สองวิธีในการรับรองความถูกต้องกับ s.id API, API key สำหรับ server-to-server, OAuth 2.0 สำหรับการทำงานแทนผู้ใช้

การเข้าถึงแบบเซิร์ฟเวอร์ถึงเซิร์ฟเวอร์

API key รับรองความถูกต้องของการเชื่อมต่อ server-to-server สร้างหนึ่งใน Dashboard → Developer → API Keys เลือกสิทธิ์ของคุณ และส่งเป็น Bearer token

ขอบเขตสิทธิ์การเข้าถึง
links:readแสดงและอ่านลิงก์
links:writeสร้างและอัปเดตลิงก์ (สร้าง แก้ไข กู้คืน)
links:archiveเก็บลิงก์เข้าคลัง
links:analyticsอ่านสถิติการคลิกและจำนวนคลิกตลอดอายุการใช้งานของแต่ละลิงก์
qr:readอ่านการตั้งค่าคิวอาร์โค้ด (ส่วนกลางและรายลิงก์)
qr:writeปรับแต่งการตั้งค่าคิวอาร์โค้ด (ส่วนกลางและรายลิงก์)
user:readอ่านโปรไฟล์ผู้ใช้ที่ยืนยันตัวตนแล้วและโควตาบัญชี
microsites:readอ่าน microsite
microsites:writeสร้าง อัปเดต และจัดการคอมโพเนนต์ของ microsite
microsites:deleteลบ microsite และคอมโพเนนต์
bash
Authorization: Bearer sk_live_...
bash
curl https://api.s.id/v2/links \
  -H "Authorization: Bearer sk_live_..."
  • Key เริ่มต้นด้วย sk_live_ และแสดงเพียงครั้งเดียวเมื่อสร้าง
  • ขอเฉพาะสิทธิ์ขั้นต่ำที่การเชื่อมต่อของคุณต้องการ
  • เพิกถอน key ทันทีหากถูกบุกรุก, สร้างอันใหม่
  • อย่าเปิดเผย API key ฝั่ง client (เบราว์เซอร์, แอปมือถือ)

Authorization flow

เปลี่ยนเส้นทางผู้ใช้ไปยัง s.id เพื่อให้ความยินยอม ตรวจสอบ state ของ callback แล้วแลกรหัสแบบใช้ครั้งเดียวเป็น access token และ refresh token แบบหมุนเวียน

  • สร้างค่า state ที่คาดเดาไม่ได้ เก็บไว้ในเซสชันผู้ใช้ และตรวจสอบให้ตรงกันทุกประการเมื่อ callback เพื่อป้องกัน CSRF
  • ใช้ redirect_uri ที่ตรงกับค่าที่ลงทะเบียนไว้สำหรับแอปพลิเคชัน OAuth ของคุณทุกประการ

ต้องใช้ PKCE โดยไม่มี client secret

สำหรับ SPA แอปมือถือ และ CLI สร้าง code_verifier แบบสุ่ม ส่งค่า challenge S256 ตอนขออนุญาต แล้วส่ง verifier เดิมเมื่อแลกโทเค็น

bash
https://api.s.id/oauth/authorize?
  response_type=code&
  client_id=YOUR_CLIENT_ID&
  redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback&
  scope=links%3Aread%20links%3Awrite&
  state=RANDOM_CSRF_VALUE&
  code_challenge=BASE64URL_SHA256_VERIFIER&
  code_challenge_method=S256
bash
curl -X POST https://api.s.id/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "code=AUTHORIZATION_CODE" \
  -d "redirect_uri=https://app.example.com/callback" \
  -d "code_verifier=ORIGINAL_RANDOM_VERIFIER"

Client secret บนแบ็กเอนด์ที่เชื่อถือได้

สำหรับแอปพลิเคชันที่เรนเดอร์บนเซิร์ฟเวอร์หรือแบ็กเอนด์ที่เก็บ client_secret เป็นความลับได้ PKCE ยังคงเป็นตัวเลือกและแนะนำให้ใช้เพื่อเพิ่มการป้องกันหลายชั้น

bash
https://api.s.id/oauth/authorize?
  response_type=code&
  client_id=YOUR_CLIENT_ID&
  redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback&
  scope=links%3Aread%20links%3Awrite&
  state=RANDOM_CSRF_VALUE
bash
curl -X POST https://api.s.id/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET" \
  -d "code=AUTHORIZATION_CODE" \
  -d "redirect_uri=https://app.example.com/callback"
โทเค็นการเข้าถึงคำอธิบาย
access_tokenหมดอายุหลังจาก 1 ชั่วโมง
refresh_tokenหมดอายุหลังจาก 30 วัน
codeใช้ได้ครั้งเดียว และหมดอายุหลังจาก 10 นาที
bash
curl -X POST https://api.s.id/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=refresh_token" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "refresh_token=CURRENT_REFRESH_TOKEN"
bash
curl -X POST https://api.s.id/oauth/revoke \
  -H "Content-Type: application/json" \
  -d '{"token":"TOKEN_TO_REVOKE"}'
การค้นหาและการดำเนินการโทเค็นคำอธิบาย
https://api.s.id/.well-known/oauth-authorization-serverค้นหา URL ของ endpoint สโคปที่รองรับ และวิธี PKCE ผ่านข้อมูลเมตา RFC 8414
POST /oauth/introspectเซิร์ฟเวอร์ทรัพยากรลับสามารถตรวจสอบว่าโทเค็นยังใช้งานอยู่และดูสโคปของโทเค็นได้
POST /oauth/revokeเพิกถอน access token หรือ refresh token เมื่อผู้ใช้ยกเลิกการเชื่อมต่อกับระบบของคุณ
GET /oauth/userinfoอ่านโปรไฟล์ที่เชื่อมโยงกับโทเค็นการเข้าถึง OAuth ที่มี user:read

เปิด Developer Dashboard