Перейти к основному содержимому

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

Для работы с Rock Rim API необходимо пройти аутентификацию и получить токен доступа.

Методы аутентификации

API предоставляет несколько методов для получения токенов доступа в зависимости от вашего сценария использования.

Получение токена доступа

GET /api/v1/identity/auth/access-token

Получает токен доступа, необходимый для обработки других запросов. Безопасность: Требуется Публичный ключ который вы получили при регистрации аккаунта

Если вы его утеряли - запросите ключ у администратора.

Запрос

GET /api/v1/identity/auth/access-token HTTP/1.1
Host: API_HOST
x-public-project-key: YOUR_PUBLIC_PROJECT_KEY
Content-Type: application/json

Успешный ответ (200 OK)

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"ttl_seconds": 3600
}

Параметры ответа

ПараметрТипОписание
access_tokenstringJWT токен для использования в последующих запросах
ttl_secondsintegerВремя жизни токена в секундах

Возможные ошибки

  • 400 Bad Request - неверный запрос
  • 500 Internal Server Error - внутренняя ошибка сервера

Инициализация сессии проекта

POST /api/v1/identity/auth/init

Инициализирует новую сессию для проекта, проверяя учетные данные проекта и возвращая временный токен доступа с информацией о проекте и магазинах.

Получает токен доступа, необходимый для обработки других запросов. Безопасность: Требуется Публичный ключ accounta

Если вы его утеряли - запросите ключ у администратора.

Запрос

POST /api/v1/identity/auth/init HTTP/1.1
Host: API_HOST
x-public-project-key: YOUR_PUBLIC_PROJECT_KEY
Content-Type: application/json

{
"user_id": "user_12345",
"device_info": {
"device_id": "A1B2C3D4-E5F6-7890",
"platform": "ios",
"os_version": "17.2.1",
"app_version": "2.1.0"
}
}

Параметры запроса

ПараметрТипОбязательныйОписание
public_keystringДаПубличный ключ проекта
user_idstringДаИдентификатор пользователя в вашей системе
device_infoobjectНетИнформация об устройстве
dlschemestringНетDeep Link схема приложения для интеграции (например, myapp://)

DeviceInfo

ПараметрТипОписание
device_idstringУникальный идентификатор устройства
platformstringПлатформа: ios, android, web
os_versionstringВерсия операционной системы
app_versionstringВерсия приложения

Успешный ответ (200 OK)

{
"project": {
"id": "proj_abc123xyz",
"name": "My Awesome Game",
"bundle_id": "com.example.game",
"platform": "mobile",
"status": "active",
"dlscheme": "myapp://"
},
"session": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_at": "2024-01-13T11:30:00Z",
"expires_in_seconds": 3600
},
"stores": [
{
"id": "store_xyz789",
"store_type": "web",
"is_sandbox": false,
"status": "active"
}
]
}

Параметры ответа

ПараметрТипОписание
projectobjectИнформация о проекте
sessionobjectИнформация о сессии с токеном
storesarrayСписок доступных магазинов

ProjectInfo

ПараметрТипОписание
idstringИдентификатор проекта
namestringНазвание проекта
bundle_idstringBundle ID приложения
platformstringПлатформа проекта
statusstringСтатус проекта
dlschemestringDeep Link схема приложения для интеграции

SessionInfo

ПараметрТипОписание
tokenstringJWT токен для авторизации запросов
expires_atstringДата и время истечения токена (ISO 8601)
expires_in_secondsintegerВремя до истечения в секундах

StoreInfo

ПараметрТипОписание
idstringИдентификатор магазина
store_typestringТип магазина: iap, web, custom
is_sandboxbooleanФлаг тестового окружения
statusstringСтатус магазина

Возможные ошибки

  • 400 Bad Request - неверные параметры запроса
  • 500 Internal Server Error - внутренняя ошибка сервера

Получение JWT сессии

POST /api/v1/identity/auth/token

Альтернативный метод для получения JWT токена сессии.

Безопасность: Требуется API ключ (x-public-project-key)

Запрос

POST /api/v1/identity/auth/token HTTP/1.1
Host: API_HOST
x-public-project-key: YOUR_PUBLIC_PROJECT_KEY
Content-Type: application/json

{
"user_id": "user_12345",
"device_info": {
"device_id": "A1B2C3D4-E5F6-7890",
"platform": "android",
"os_version": "14.0",
"app_version": "1.5.0"
}
}

Параметры запроса

ПараметрТипОбязательныйОписание
public_keystringДаПубличный ключ проекта
user_idstringДаИдентификатор пользователя
device_infoobjectНетИнформация об устройстве
dlschemestringНетDeep Link схема приложения для интеграции (например, myapp://)

Успешный ответ (200 OK)

{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_at": "2024-01-13T11:30:00Z",
"expires_in_seconds": 3600
}

Параметры ответа

ПараметрТипОписание
tokenstringJWT токен сессии
expires_atstringДата и время истечения (ISO 8601)
expires_in_secondsintegerВремя до истечения в секундах

Возможные ошибки

  • 400 Bad Request - неверные параметры запроса
  • 500 Internal Server Error - внутренняя ошибка сервера

Использование токена доступа

После получения токена доступа, его необходимо передавать в заголовке Authorization всех последующих запросов:

Authorization: Bearer YOUR_ACCESS_TOKEN

Пример запроса с токеном

GET /api/v1/items?store_id=store_xyz789 HTTP/1.1
Host: API_HOST
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json

Безопасность

Рекомендации по безопасности

  • Никогда не публикуйте API ключи и секреты проектов в открытом доступе
  • Обновляйте токены до истечения их срока действия
  • Храните токены безопасно на стороне клиента
  • Не передавайте токены через незащищенные каналы
  • Проверяйте срок действия токенов перед использованием

Последовательность аутентификации

Рекомендуемая последовательность для начала работы с API:

  1. Получите API ключ (Запросите у администратора ключи для проекта)
  2. Получите public_key для вашего проекта
  3. Инициализируйте сессию используя /api/v1/identity/auth/init с user_id игрока
  4. Сохраните токен из session.token для использования в последующих запросах
  5. Используйте токен в заголовке Authorization для всех защищенных эндпоинтов

Примеры кода

JavaScript (Fetch API)

// Инициализация сессии
async function initSession(userId) {
const response = await fetch('https://API_HOST/api/v1/identity/auth/init', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-public-project-key': 'YOUR_PUBLIC_PROJECT_KEY'
},
body: JSON.stringify({
user_id: userId,
device_info: {
device_id: getDeviceId(),
platform: 'web',
os_version: navigator.userAgent,
app_version: '1.0.0'
}
})
});

const data = await response.json();
return {
token: data.session.token,
stores: data.stores,
project: data.project
};
}

// Использование токена
async function getItems(token, storeId) {
const response = await fetch(`https://API_HOST/api/v1/items?store_id=${storeId}`, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});

return await response.json();
}

cURL

# Инициализация сессии
curl -X POST https://API_HOST/api/v1/identity/auth/init \
-H "Content-Type: application/json" \
-H "x-public-project-key: YOUR_PUBLIC_PROJECT_KEY" \
-d '{
"public_key": "pk_live_abc123xyz",
"user_id": "user_12345",
"device_info": {
"device_id": "device_abc123",
"platform": "ios",
"os_version": "17.0",
"app_version": "2.0.0"
}
}'

# Использование токена
curl -X GET "https://API_HOST/api/v1/items?store_id=store_xyz789" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"