PKCE ile bir müşteriyi yetkilendirin
ShareAI yetkilendirme kodu akışını S256 PKCE ile uygulayın, durumu doğrulayın ve kodu uygulamanızın backend'inde değiştirin.
Bu sayfada
Bu akış, bir müşteri hesabını uygulamanıza bağlar. Müşteri oturum açar, kişisel veya organizasyon hesabını seçer ve istenen izinleri onaylar. Ardından backend'iniz kısa ömürlü kodu tokenlarla değiştirir.
Başlamadan önce#
Tamamla uygulama kaydı. Tam olarak kayıtlı bir geri çağrı, sunucuda tutulan istemci kimlik bilgileri ve yetkilendirmeyi tamamlayan tarayıcı için sunucu tarafında bir oturum oluşturmanız gerekir.
1. Yetkilendirme isteğini oluşturun#
https://auth.shareai.now/oauth/authorizeMüşteriden uygulamayı yetkilendirmesini isteyin.
- Temel URL
https://auth.shareai.now- Kimlik doğrulama
- Tarayıcı yönlendirmesi; kayıtlı uygulama
Her deneme için yeni bir doğrulayıcı, durum ve nonce oluşturun. Bunları başlatan kullanıcının sunucu tarafındaki oturumunda saklayın. SHA-256 zorluğunu, asla doğrulayıcıyı, tarayıcı yönlendirmesinde gönderin. Uygulamanızın ihtiyaç duyduğu kapsamları isteyin.
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. Geri çağrıyı doğrulayın#
Yetkilendirme reddedilirse, OAuth hatasını normal bir iptal olarak ele alın. Aksi takdirde döndürülen state değeri kaydedilen değerle karşılaştırmadan kodu kullanmayın. Eksik veya eşleşmeyen bir durumu reddedin. Kaydedilen durumu bir kez kullanın; başka bir tarayıcı oturumu tarafından gönderilen geri çağrı URL'lerini kabul etmeyin.
3. Kodu değiştirin#
https://auth.shareai.now/oauth/tokenTek kullanımlık bir kodu ve eşleşen PKCE doğrulayıcısını değiştirin.
- Temel URL
https://auth.shareai.now- Kimlik doğrulama
- Gizli istemci kimlik doğrulaması
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"
İstemci için yapılandırılmış kimlik doğrulama yöntemini kullanın. Örnek, form tabanlı istemci kimlik doğrulamasını kullanır. Aynı kodu iki kez göndermeyin; tüketilen veya süresi dolmuş bir koddan sonra yetkilendirmeyi yeniden başlatın.
4. Sonucu saklayın ve uygulama oturumunuzu oluşturun#
Erişim ve yenileme tokenlarını backend'inizde saklayın. Döndürülen expires_in değeri kullanın, kalıcı bir token varsaymayın. Bir ID token kullanıyorsanız, imzasını yayıncının JWKS'si, beklenen yayıncı, istemci hedef kitlesi, süresi ve orijinal nonce'unuz ile doğrulamadan iddialara güvenmeyin.
Yaşam döngüsüne devam edin#
Yenileme ve döngü · Kapsamlar ve hesap kimliği · OAuth sohbet istekleri
Son güncelleme Eylül 15, 2026