อนุญาตลูกค้าด้วย PKCE
ใช้กระบวนการ ShareAI authorization-code flow พร้อม S256 PKCE ตรวจสอบ state และแลกเปลี่ยนโค้ดบน backend ของแอปพลิเคชันของคุณ.
ในหน้านี้
กระบวนการนี้เชื่อมต่อบัญชีลูกค้าหนึ่งบัญชีกับแอปพลิเคชันของคุณ ลูกค้าลงชื่อเข้าใช้ เลือกบัญชีส่วนตัวหรือบัญชีองค์กร และอนุมัติสิทธิ์ที่ร้องขอ จากนั้น backend ของคุณจะแลกเปลี่ยนโค้ดที่มีอายุสั้นเป็นโทเค็น.
ก่อนเริ่มต้น#
เสร็จสมบูรณ์ การลงทะเบียนแอปพลิเคชัน. คุณต้องมี callback ที่ลงทะเบียนอย่างถูกต้อง ข้อมูลรับรองของไคลเอนต์ที่เก็บไว้ในเซิร์ฟเวอร์ และ session ฝั่งเซิร์ฟเวอร์สำหรับเบราว์เซอร์ที่ทำการอนุญาต.
1. สร้างคำขอการอนุญาต#
https://auth.shareai.now/oauth/authorizeขอให้ลูกค้าอนุญาตแอปพลิเคชัน.
- Base URL → URL พื้นฐาน
https://auth.shareai.now- การตรวจสอบสิทธิ์
- การเปลี่ยนเส้นทางของเบราว์เซอร์; แอปพลิเคชันที่ลงทะเบียน
สร้าง verifier, state และ nonce ใหม่สำหรับแต่ละครั้ง เก็บไว้ใน session ฝั่งเซิร์ฟเวอร์ของผู้ใช้ที่เริ่มต้น ส่ง SHA-256 challenge แต่ไม่ใช่ verifier ในการเปลี่ยนเส้นทางของเบราว์เซอร์ ขอเฉพาะ scopes ที่แอปพลิเคชันของคุณต้องการ.
Python
import base64
import hashlib
import secrets
import urllib.parse
verifier = secrets.token_urlsafe(48)
challenge = base64.urlsafe_b64encode(hashlib.sha256(verifier.encode()).digest()).rstrip(b"=").decode()
state = secrets.token_urlsafe(32)
nonce = secrets.token_urlsafe(32)
# Store verifier, state and nonce in the user's server-side session.
params = {
"response_type": "code",
"client_id": "YOUR_CLIENT_ID",
"redirect_uri": "https://app.example.com/auth/shareai/callback",
"scope": "openid profile surcharge",
"state": state,
"nonce": nonce,
"code_challenge": challenge,
"code_challenge_method": "S256",
}
print("https://auth.shareai.now/oauth/authorize?" + urllib.parse.urlencode(params))
TypeScript
import { randomBytes, createHash } from "node:crypto";
const verifier = randomBytes(48).toString("base64url");
const state = randomBytes(32).toString("base64url");
const nonce = randomBytes(32).toString("base64url");
const challenge = createHash("sha256").update(verifier).digest("base64url");
// Save verifier, state and nonce in the initiating server-side session.
const params = new URLSearchParams({ response_type: "code", client_id: "YOUR_CLIENT_ID",
redirect_uri: "https://app.example.com/auth/shareai/callback",
scope: "openid profile surcharge", state, nonce,
code_challenge: challenge, code_challenge_method: "S256" });
const authorizationUrl = `https://auth.shareai.now/oauth/authorize?${params}`;
// Redirect the browser to authorizationUrl.
2. ตรวจสอบ callback#
หากการอนุญาตถูกปฏิเสธ ให้จัดการข้อผิดพลาด OAuth เป็นการยกเลิกตามปกติ มิฉะนั้นเปรียบเทียบค่าที่ส่งกลับ state กับค่าที่บันทึกไว้ก่อนใช้โค้ด ปฏิเสธ state ที่หายไปหรือไม่ตรงกัน ใช้ state ที่บันทึกไว้เพียงครั้งเดียว; อย่ายอมรับ callback URLs ที่ส่งโดย session เบราว์เซอร์อื่น.
3. แลกเปลี่ยนโค้ด#
https://auth.shareai.now/oauth/tokenแลกเปลี่ยนโค้ดที่ใช้ครั้งเดียวและ verifier PKCE ที่ตรงกัน.
- Base URL → URL พื้นฐาน
https://auth.shareai.now- การตรวจสอบสิทธิ์
- การตรวจสอบสิทธิ์ไคลเอนต์ที่เป็นความลับ
cURL
curl --fail-with-body "https://auth.shareai.now/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "grant_type=authorization_code" \
--data-urlencode "client_id=$SHAREAI_CLIENT_ID" \
--data-urlencode "client_secret=$SHAREAI_CLIENT_SECRET" \
--data-urlencode "code=$AUTHORIZATION_CODE" \
--data-urlencode "redirect_uri=https://app.example.com/auth/shareai/callback" \
--data-urlencode "code_verifier=$PKCE_VERIFIER"
ใช้วิธีการตรวจสอบสิทธิ์ไคลเอนต์ที่กำหนดค่าสำหรับไคลเอนต์ ตัวอย่างใช้การตรวจสอบสิทธิ์ไคลเอนต์แบบฟอร์ม อย่าส่งโค้ดเดียวกันสองครั้ง; เริ่มการอนุญาตใหม่หลังจากโค้ดถูกใช้หรือหมดอายุ.
4. เก็บผลลัพธ์และสร้าง session ของแอปพลิเคชันของคุณ#
เก็บโทเค็นการเข้าถึงและรีเฟรชใน backend ของคุณ ใช้ค่าที่ส่งกลับ expires_in แทนที่จะสมมติว่าเป็นโทเค็นถาวร หากคุณใช้ ID token ให้ตรวจสอบลายเซ็นด้วย JWKS ของ issuer, issuer ที่คาดหวัง, audience ของไคลเอนต์, วันหมดอายุ และ nonce ดั้งเดิมของคุณก่อนเชื่อถือ claims.
ดำเนินการต่อในวงจรชีวิต#
การรีเฟรชและการหมุนเวียน · Scopes และตัวตนบัญชี · คำขอแชท OAuth
อัปเดตล่าสุด กันยายน 15, 2026