1.0.3 • Published 5 years ago
session-connector v1.0.3
Сервис для создания сессии
Установка
Через npm
$ npm install --save session-connector
Через yarn
$ yarn add session-connector
Для начала вызова любых методов необходимо инициализировать сервис:
import { initial } from 'session-connector';
const config = {
URI: string,
SOCKET_URI: string,
hasLogger: boolean,
onSocketOpen?: () => {},
onSocketClose?: () => {},
onSocketError?: () => {},
onSessionRefresh?: (sessionInfo: MainSessionInfo) => {},
}
initial(config);
Авторизация
По токену
import { authByToken } from 'session-connector';
const token = '<base64string>';
const {
userId,
email,
sessionServerKey,
sessionSalt,
sessionId,
ttl,
sessionTime
} = await authByToken(token);
По логину (телефон или электронная почта)
Авторизация по логину происходит в два этапа:
import { createPreparedSession } from 'session-connector';
const login = '79999999999';
const { clientPublicKey, clientSecretKey, ttl, userId, email } = await createPreparedSession(login);
После получения открытого ключа необходимо подписаться на ON_LOGIN.
const fetchResult = makeSubscription(ON_LOGIN, {
[connectionTypeName]: login,
publicKey: clientPublicKey,
metadata, // информация о браузере и геолокации
});
После получения ответа создать ApolloClient:
import { authByLogin } from 'session-connector';
const sessionTime = +new Date();
authByLogin({
salt,
secretKey, // секретный ключ клиента
publicKey, // публичный ключ сервера
sessionId,
ttl,
sessionTime // время создания сессии
});
Создание сессии в meta trust
Генерируем зашифрованные userId и salt
import { createSignedInfo } from 'session-connector';
const phone = '79999999999';
await createSignedInfo(phone);
Генерируем данные для создания сессии
import { createSignedInfo } from 'session-connector';
const fcmToken = '<token>';
const smsCode = '5555'
const modelPhone = 'iPhone 12'
const {
ttl,;
sessionId,
sessionServerKey,
sessionSalt,
sessionTime,
clientSecretKey,
} = await generateSession(fcmToken, smsCode, modelPhone);
Выполнение запросов
function makeQuery<T>(query: DocumentNode, variables: OperationVariables): Promise<ApolloQueryResult<T>>
function makeMutation(mutation: DocumentNode, variables: OperationVariables, fetchPolicy: FetchPolicy): Promise<any>
function makeSubscription(query: DocumentNode, variables: any): Observable<any>
Передача файлов
Открытие/получение канала для передачи данных
import { getUploadsChannel } from 'session-connector';
const channel = getUploadsChannel();
Открытие канала для передачи одного файла
import { createDataChannel } from 'session-connector';
const id = 'Идентификатор сессии начала передачи файла';
const channel = createDataChannel(id);
Типы данных
/**
* Конфигурация сервиса
*/
export type Config = {
URI: string,
SOCKET_URI: string,
hasLogger: boolean,
onSocketOpen?: VoidFunction,
onSocketClose?: VoidFunction,
onSocketError?: VoidFunction,
onSessionRefresh?: (sessionInfo: ClientSessionInfo) => {},
}
1.0.3
5 years ago
1.0.2
5 years ago
1.0.1
5 years ago
1.0.0
5 years ago
0.2.1
5 years ago
0.2.0
5 years ago
0.1.30
5 years ago
0.1.29
5 years ago
0.1.28
5 years ago
0.1.27
5 years ago
0.1.26
5 years ago
0.1.25
5 years ago
0.1.24
5 years ago
0.1.23
5 years ago
0.1.21
5 years ago
0.1.22
5 years ago
0.1.20
5 years ago
0.1.19
5 years ago
0.1.15
5 years ago
0.1.16
5 years ago
0.1.17
5 years ago
0.1.18
5 years ago
0.1.13
5 years ago
0.1.10
5 years ago
0.1.11
5 years ago
0.1.12
5 years ago
0.1.9
5 years ago
0.1.8
5 years ago
0.1.7
5 years ago
0.1.6
5 years ago
0.1.5
5 years ago
0.1.4
5 years ago
0.1.3
5 years ago
0.1.2
5 years ago
0.1.1
5 years ago
0.1.0
5 years ago