Быстрый старт
Данный раздел описывает технические моменты, необходимые для начала интеграции.
Полноценная реализация и описание API Reference еще в процессе и требует с нашей стороны доработки, но сигнатуры методов менять не планируется.
Доступы к сервисам
Для подключения доступны production и stage окружения, для начала интеграции стоит использовать данные для stage.
Для получения доступа к окружению необходим специальный токен, который генерируется по запросу. Он используется для первоначального соединения между сервисами, далее авторизация происходит посредством пользовательских токенов.
services-stage-mx6hvkth4a-uc.a.run.app
services.stage.galactica.games
Установить зависимости
В данном руководстве приводятся примеры интеграции для NodeJS и TypeScript.
Для начала работы следует установить пакеты @protobuf-ts/grpc-transport и @grpc/grpc-js
# Install via NPM
npm install --save @grpc/grpc-js
npm install --save @protobuf-ts/grpc-transport
Транспорт и авторизация
Для работы с gRPC требуется создать две вспомогательные функции для создания контейнера для передачи команд на удаленный сервис и для авторизации. Необязательно, но повышает удобство использования.
import { GrpcTransport } from "@protobuf-ts/grpc-transport";
import { RpcOptions } from "@protobuf-ts/runtime-rpc";
import { ChannelCredentials } from "@grpc/grpc-js";
export const getTransport = (): GrpcTransport => {
const host = process.env.SERVICES_API_URL ?? "";
return new GrpcTransport({
host,
channelCredentials: host.includes('localhost')
? ChannelCredentials.createInsecure()
: ChannelCredentials.createSsl(),
});
};
export const getAuthorization = (accessToken: string): RpcOptions => {
return {
meta: {
authorization: `Bearer ${accessToken}`
}
};
};
Первый запрос
В качестве тестового начального запроса можно использовать запрос к сервису определения местоположения по IP адресу. Он не требует авторизации.
Для начала, стоит скачать сгенерированный клиент для этого сервиса, распаковать и скопировать в папку src/services
.
Далее пример использования клиента для вызова необходимых методов у сервиса, в данном случае для получения сведений о текущем местоположении и флага, который сообщает, разрешен доступ или нет.
// Import response type
import { Access } from "./services/system/v1alpha1/restrictions";
// Import service client for connecting to the backend
import { RestrictionsServiceClient } from "./services/system/v1alpha1/restrictions.client";
// Import special helpers for building transport and auth
import { getAuthorization, getTransport } from "./utils/transport";
export const accessChecker = async (): Promise<Access> => {
// creates service instance using transport as a parameter
const service = new RestrictionsServiceClient(getTransport());
const access = await service.isAccessAllowed({});
// in case authorization needed, use the next way of doing request
// auth token - token, which backend gives for user oprations
// const access = await service.isAccessAllowed({}, getAuthorization('auth token'));
return access.response;
}
accessChecker().then((access: Access) => {
console.log(access);
// will return similar to
// { allowed: true, location: { country: 'US', region: 'CA', city: 'Palo Alto' } }
});
Пример приложения для проверки локации прикреплен ниже в виде архива.
Last updated
Was this helpful?