Server-to-Server API
Когда пользователя рядом нет, а профиль нужен — например, ваш сервер обходит своих
пользователей и подтягивает их имена и аватары, — используйте Server-to-Server API. Он
работает не от имени пользователя, а от имени вашего приложения: токен по гранту
client_credentials со скоупом users.read.
1. Возьмите токен Server-to-Server
Заголовок раздела «1. Возьмите токен Server-to-Server»Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&
client_id=ВАШ_CLIENT_ID&
client_secret=ВАШ_CLIENT_SECRET&
scope=users.readОтвет:
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJ0eXAiOiJKV1Qi…",
"scope": "users.read"
}
Дальше во все запросы к API — заголовок Authorization: Bearer <access_token>.
2. Найдите пользователей
Заголовок раздела «2. Найдите пользователей»Ключ — это парный sub пользователя: 64 hex-символа, свой у каждого партнёра.
Тот самый sub, что пришёл вам при входе пользователя — его и сохраняйте у себя.
Пачкой — POST /api/v1/users
Заголовок раздела «Пачкой — POST /api/v1/users»Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{ "sub": ["742ca3e3b6567052f880bb607d5b997b51be4ab0d70d2d52e55f0d5aac8bc24a", "6dac6a4bc0bea7efc53f751359422fa82ba801a13544f269c7d05c94abd7f6ea"] }Ответ — карта «присланный ключ → краткий профиль». Ненайденные ключи в ответ не попадают; ключи ответа — ровно те, что вы прислали:
{
"data": {
"742ca3e3b6567052f880bb607d5b997b51be4ab0d70d2d52e55f0d5aac8bc24a": {
"sub": "742ca3e3b6567052f880bb607d5b997b51be4ab0d70d2d52e55f0d5aac8bc24a",
"avatar": "https://id.fidmos.com/avatar-blank.png",
"full_name": "Иван Петров"
},
"6dac6a4bc0bea7efc53f751359422fa82ba801a13544f269c7d05c94abd7f6ea": {
"sub": "6dac6a4bc0bea7efc53f751359422fa82ba801a13544f269c7d05c94abd7f6ea",
"avatar": "https://id.fidmos.com/avatar-blank.png",
"full_name": "Пётр Иванов"
}
}
}
За раз — до 1000 ключей. Если ни один не нашёлся, data приходит пустым списком.
Одного — GET /api/v1/users/{key}
Заголовок раздела «Одного — GET /api/v1/users/{key}»Authorization: Bearer ACCESS_TOKENОдиночный ответ шире — с почтой и раздельными именем и фамилией:
{
"data": {
"sub": "742ca3e3b6567052f880bb607d5b997b51be4ab0d70d2d52e55f0d5aac8bc24a",
"email": "user@example.com",
"name": "Иван",
"last_name": "Петров",
"avatar": "https://id.fidmos.com/avatar-blank.png",
"full_name": "Иван Петров"
}
}
| HTTP | Когда |
|---|---|
401 |
нет, истёк или неверен токен |
403 |
у токена нет скоупа users.read |
404 |
(только GET) ключ не найден или не похож на sub (отсекается маршрутом) |
422 |
(только POST) ключ в пачке не похож на sub |
Разбор форм ошибок — в справочнике ошибок.