ShareAI Platform Docs

Авторизуйте клиента с помощью PKCE

Реализуйте поток авторизации ShareAI с использованием S256 PKCE, проверьте состояние и обменяйте код на серверной части вашего приложения.

Просмотреть как Markdown
На этой странице

Этот поток подключает одну учетную запись клиента к вашему приложению. Клиент входит в систему, выбирает личную или организационную учетную запись и одобряет запрашиваемые разрешения. Затем ваша серверная часть обменивает краткосрочный код на токены.

Перед началом#

Завершить регистрацию приложения. Вам нужен точно зарегистрированный обратный вызов, учетные данные клиента, хранящиеся на сервере, и серверная сессия для браузера, завершающего авторизацию.

1. Создайте запрос авторизации#

GET 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))

2. Проверьте обратный вызов#

Если авторизация отклонена, обработайте ошибку OAuth как обычную отмену. В противном случае сравните возвращенное state со сохраненным значением перед использованием кода. Отклоните отсутствующее или несоответствующее состояние. Используйте сохраненное состояние только один раз; не принимайте URL-адреса обратного вызова, отправленные другой сессией браузера.

3. Обменяйте код#

POST https://auth.shareai.now/oauth/token

Обменяйте одноразовый код и соответствующий проверяющий элемент PKCE.

Базовый 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 токен, проверьте его подпись с помощью JWKS издателя, ожидаемого издателя, аудитории клиента, срока действия и вашего оригинального nonce перед доверием к утверждениям.

Продолжите жизненный цикл#

Обновление и ротация · Области и идентичность учетной записи · Запросы чата OAuth

Последнее обновление Сентябрь 15, 2026

Документация платформы ShareAI
Вся документация

Искать по названию или содержанию.

Спросить об этой странице

Выберите помощника для изучения этой страницы. Вы также можете скопировать страницу и вставить её в ваш диалог.

Ask ChatGPTAsk ClaudeAsk GrokAsk ShareAI