Idhinisha mteja kwa PKCE
Tekeleza mtiririko wa ShareAI wa authorization-code na S256 PKCE, thibitisha hali na ubadilishe msimbo kwenye backend ya programu yako.
Kwenye ukurasa huu
Mtiririko huu unaunganisha akaunti moja ya mteja na programu yako. Mteja huingia, huchagua akaunti ya kibinafsi au shirika na kuidhinisha ruhusa zilizoombwa. Backend yako kisha hubadilisha msimbo wa muda mfupi kwa tokeni.
Kabla ya kuanza#
Kamilisha usajili wa programu. Unahitaji callback iliyosajiliwa kwa usahihi, hati za mteja zilizoshikiliwa na seva, na kikao cha upande wa seva kwa kivinjari kinachokamilisha idhini.
1. Unda ombi la idhini#
https://auth.shareai.now/oauth/authorizeMuombe mteja kuidhinisha programu.
- URL ya Msingi
https://auth.shareai.now- Uthibitishaji
- Uelekezaji wa kivinjari; programu iliyosajiliwa
Tengeneza verifier mpya, hali na nonce kwa kila jaribio. Hifadhi kwenye kikao cha upande wa seva cha mtumiaji anayeanzisha. Tuma changamoto ya SHA-256, kamwe si verifier, kwenye uelekezaji wa kivinjari. Omba tu maeneo ambayo programu yako inahitaji.
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. Thibitisha callback#
Ikiwa idhini imekataliwa, shughulikia kosa la OAuth kama kughairi kawaida. Vinginevyo, linganisha state na thamani iliyohifadhiwa kabla ya kutumia msimbo. Kataa hali iliyokosekana au isiyolingana. Tumia hali iliyohifadhiwa mara moja; usikubali URL za callback zilizowasilishwa na kikao kingine cha kivinjari.
3. Badilisha msimbo#
https://auth.shareai.now/oauth/tokenBadilisha msimbo wa matumizi moja na verifier inayolingana ya PKCE.
- URL ya Msingi
https://auth.shareai.now- Uthibitishaji
- Uthibitishaji wa mteja wa siri
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"
Tumia mbinu ya uthibitishaji wa mteja iliyosanidiwa kwa mteja. Mfano unatumia uthibitishaji wa mteja unaotegemea fomu. Usitumie msimbo huo mara mbili; anza idhini tena baada ya msimbo kutumika au kuisha muda wake.
4. Hifadhi matokeo na anzisha kikao cha programu yako#
Hifadhi tokeni za ufikiaji na upya kwenye backend yako. Tumia expires_in badala ya kudhani tokeni ya kudumu. Ikiwa unatumia tokeni ya ID, thibitisha saini yake na JWKS ya mtoaji, mtoaji anayetarajiwa, hadhira ya mteja, muda wa kuisha na nonce yako ya awali kabla ya kuamini madai.
Endelea na mzunguko wa maisha#
Upya na mzunguko · Maeneo na utambulisho wa akaunti · Maombi ya mazungumzo ya OAuth
Ilisasishwa mwisho Septemba 15, 2026