Pahintulutan ang isang customer gamit ang PKCE
Ipatupad ang ShareAI authorization-code flow gamit ang S256 PKCE, beripikahin ang estado at palitan ang code sa backend ng iyong aplikasyon.
Sa pahinang ito
Ang flow na ito ay nagkokonekta ng isang customer account sa iyong aplikasyon. Ang customer ay mag-sign in, pipili ng personal o organisasyon na account at aprubahan ang mga hinihinging pahintulot. Ang iyong backend ay papalitan ang panandaliang code para sa mga token.
Bago ka magsimula#
Kumpleto rehistrasyon ng aplikasyon. Kailangan mo ng eksaktong rehistradong callback, server-held client credentials at isang server-side session para sa browser na kumukumpleto ng authorization.
1. Lumikha ng authorization request#
https://auth.shareai.now/oauth/authorizeHilingin sa customer na i-authorize ang aplikasyon.
- Base URL
https://auth.shareai.now- Pagpapatunay
- Browser redirect; rehistradong aplikasyon
Bumuo ng sariwang verifier, estado at nonce para sa bawat pagtatangka. Iimbak ang mga ito sa server-side session ng user na nagpasimula. Ipadala ang SHA-256 challenge, huwag kailanman ang verifier, sa browser redirect. Humiling lamang ng mga scope na kailangan ng iyong aplikasyon.
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. Beripikahin ang callback#
Kung tinanggihan ang authorization, hawakan ang OAuth error bilang normal na pagkansela. Kung hindi, ihambing ang ibinalik state sa nakaimbak na halaga bago gamitin ang code. Tanggihan ang nawawala o hindi tugmang estado. Gamitin ang nakaimbak na estado nang isang beses; huwag tanggapin ang callback URLs na isinumite ng ibang browser session.
3. Palitan ang code#
https://auth.shareai.now/oauth/tokenPalitan ang isang beses na code at ang tumutugmang PKCE verifier.
- Base URL
https://auth.shareai.now- Pagpapatunay
- Kumpidensyal na pagpapatunay ng kliyente
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"
Gamitin ang paraan ng pagpapatunay ng kliyente na naka-configure para sa kliyente. Ang halimbawa ay gumagamit ng form-based na pagpapatunay ng kliyente. Huwag ipadala ang parehong code nang dalawang beses; simulan muli ang authorization pagkatapos ng nagamit o nag-expire na code.
4. Iimbak ang resulta at itatag ang session ng iyong app#
Iimbak ang access at refresh tokens sa iyong backend. Gamitin ang ibinalik expires_in sa halip na ipagpalagay ang permanenteng token. Kung gagamit ka ng ID token, beripikahin ang lagda nito gamit ang JWKS ng issuer, inaasahang issuer, client audience, expiry at ang iyong orihinal na nonce bago pagkatiwalaan ang mga claim.
Ipagpatuloy ang lifecycle#
Refresh at rotation · Mga scope at pagkakakilanlan ng account · Mga kahilingan sa OAuth chat
Huling na-update noong Setyembre 15, 2026