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