یک مشتری را با PKCE تأیید کنید
جریان کد مجوز ShareAI را با S256 PKCE پیادهسازی کنید، وضعیت را تأیید کنید و کد را در بکاند برنامه خود مبادله کنید.
در این صفحه
این جریان یک حساب مشتری را به برنامه شما متصل میکند. مشتری وارد میشود، یک حساب شخصی یا سازمانی را انتخاب میکند و مجوزهای درخواستشده را تأیید میکند. سپس بکاند شما کد کوتاهمدت را با توکنها مبادله میکند.
قبل از شروع#
کامل ثبت برنامه. شما به یک بازگشت ثبتشده دقیق، اعتبارنامههای مشتری نگهداریشده در سرور و یک جلسه سمت سرور برای مرورگر تکمیلکننده مجوز نیاز دارید.
1. درخواست مجوز را ایجاد کنید#
https://auth.shareai.now/oauth/authorizeاز مشتری بخواهید برنامه را مجاز کند.
- URL پایه
https://auth.shareai.now- احراز هویت
- بازگشت مرورگر؛ برنامه ثبتشده
برای هر تلاش یک تأییدکننده جدید، وضعیت و nonce ایجاد کنید. آنها را در جلسه سمت سرور کاربر آغازگر ذخیره کنید. چالش SHA-256 را ارسال کنید، هرگز تأییدکننده را در بازگشت مرورگر ارسال نکنید. فقط محدودههایی را درخواست کنید که برنامه شما نیاز دارد.
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. بازگشت را اعتبارسنجی کنید#
اگر مجوز رد شد، خطای OAuth را به عنوان یک لغو عادی مدیریت کنید. در غیر این صورت، مقدار بازگشتی را با مقدار ذخیرهشده قبل از استفاده از کد مقایسه کنید. یک وضعیت گمشده یا ناسازگار را رد کنید. وضعیت ذخیرهشده را یک بار مصرف کنید؛ URLهای بازگشت ارسالشده توسط جلسه مرورگر دیگر را قبول نکنید. state یک کد یکبار مصرف و تأییدکننده PKCE مطابقتدار را مبادله کنید.
3. کد را مبادله کنید#
https://auth.shareai.now/oauth/tokenاحراز هویت مشتری محرمانه.
- 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. نتیجه را ذخیره کنید و جلسه برنامه خود را برقرار کنید#
به جای فرض یک توکن دائمی. اگر از یک توکن ID استفاده میکنید، امضای آن را با JWKS صادرکننده، صادرکننده مورد انتظار، مخاطب مشتری، انقضا و nonce اصلی خود اعتبارسنجی کنید قبل از اعتماد به ادعاها. expires_in دو استفاده از یک توکن.
چرخه عمر را ادامه دهید#
محدودهها و هویت حساب · درخواستهای چت OAuth · لینک به قبل از شروع
آخرین بهروزرسانی سپتامبر 15, 2026