API › Аутентификация

Аутентификация

Поддерживаются два способа. Выбирайте по типу клиента — оба возвращают один и тот же auth-токен из таблицы se_session_auth.

① Bearer-токен — рекомендуется для мобильных

Stateless. Не требует cookie/session, не требует CSRF. Передавайте токен в заголовке Authorization: Bearer <token>.

# 1. получить токен (один раз)
curl -X POST https://beon.vip/api.php?act=auth_token_issue \
  -d email=USER -d password=PASS

# → {"ok":true,"result":{"token":"6a34...8251","token_type":"Bearer","user":{...}}}

# 2. каждый запрос с заголовком
curl https://beon.vip/api.php?act=auth_me \
  -H 'Authorization: Bearer 6a34...8251'

# 3. выйти
curl -X POST https://beon.vip/api.php?act=auth_token_revoke \
  -H 'Authorization: Bearer 6a34...8251'
Если прокси режет Authorization, поддерживается альтернативный заголовок X-Auth-Token: <token>.

Формат токена

40 символов hex (sha1). Это та же запись se_session_auth.session_auth_key, которая выдаётся при веб-логине, — оба канала живут в одной таблице.

Лайфтайм

По умолчанию токен «persistent» — живёт неограниченно. Сборщик мусора удаляет токены, не использованные дольше 6 месяцев (см. user_auth_token_delete). last_used обновляется на каждом запросе.

② Cookie + CSRF — для веб-клиента

# 1. получить csrf-токен (создаст PHPSESSID)
curl -c jar -b jar https://beon.vip/api.php?act=csrf_token
# → {"ok":true,"result":{"token":"abc..."}}

# 2. логин
curl -c jar -b jar -X POST https://beon.vip/api.php?act=auth_login \
  -H 'X-CSRF-Token: abc...' \
  -d email=USER -d password=PASS

# 3. читать — куки достаточно
curl -b jar https://beon.vip/api.php?act=auth_me

# 4. писать — куки + X-CSRF-Token
curl -b jar -X POST https://beon.vip/api.php?act=im_send \
  -H 'X-CSRF-Token: abc...' \
  -d convo_id=1 -d text=hi

Actions раздела

auth_me GET /api.php?act=auth_me public read

Возвращает публичный профиль текущего пользователя. Если не залогинен — result: null.

Ответ result

user_id
int
username
string
displayname
string
photo
string (URL)
email
string (только для self)
verified
bool (только для self)

Пример

curl -H 'Authorization: Bearer <token>' https://beon.vip/api.php?act=auth_me
rate-limit: 60 / 1 мин на ip
auth_login POST /api.php?act=auth_login public write

Cookie-логин (для веб-клиента). Требует предварительный csrf_token. Возвращает CSRF и auth_token.

Параметры

имятипreqописание
email string да email или username
password string да

Ответ result

user
object
csrf_token
string
auth_token
string (bearer)
rate-limit: 10 / 1 ч на ip
auth_signup POST /api.php?act=auth_signup public write

Регистрация. Поддерживает invite, captcha (g-recaptcha-response), TOS-флаг.

Параметры

имятипreqописание
email string да
password string да
password2 string нет по умолч. = password
username string если setting_username=1
agree int если включён TOS 1 — согласие
invite_code string если включены invite-коды
g-recaptcha-response string если включена captcha
timezone string нет по умолч. из настроек

Ответ result

created
bool
user_id
int
logged_in
bool
csrf_token
string|null
verify_required
bool
rate-limit: 3 / 1 ч на ip
auth_logout POST /api.php?act=auth_logout auth write csrf

Выход для cookie-сессии: чистит куки и se_session_auth-запись.

Ответ result

logged_out
bool
rate-limit: 30 / 1 мин на user
auth_token_issue POST /api.php?act=auth_token_issue public write no-csrf

Stateless-логин для мобильных и сторонних клиентов. Возвращает bearer-токен. CSRF не требуется.

Параметры

имятипreqописание
email string да email или username
password string да
persistent int нет 1 (по умолч.) — длинный срок жизни

Ответ result

token
string (40 hex)
token_type
"Bearer"
user
object

Пример

curl -X POST -d email=USER -d password=PASS \
  https://beon.vip/api.php?act=auth_token_issue
rate-limit: 10 / 1 ч на ip
auth_token_revoke POST /api.php?act=auth_token_revoke auth write csrf

Отзывает bearer-токен текущего запроса. Если bearer не передан — выходит из cookie-сессии.

Ответ result

revoked
bool
logged_out
bool (только в fallback-режиме)
rate-limit: 30 / 1 ч на user