# Регистриране на приложение в OpenPlatform

> Полетата на запис за приложение в OpenPlatform: адрес, двата споделени токена, флаговете, които определят как се отваря, правата му и кой може да го достигне.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: bg
Content-SHA256: 0c8d95f075d19fd6d55316de2805385431116ea1d7468df15d4082a3c3fb4197
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Приложението е запис, който администраторът създава в екрана за **настройка** (`/setup/`, API за приложения на добавката `setup`). Записът е договорът между OpenPlatform и вашето приложение: къде живее, как двете доказват кои са и какво може да прави потребителят в него. Схемата на записа е `@Apps` в `plugins/setup/schemas/apps.js`.

| Поле | Задължително | Значение |
|---|---|---|
| `name` | да | името, показвано в портала |
| `url` | да | адресът, който OpenPlatform отваря |
| `reqtoken` | да | тайна, която избирате вие и която **познават и двете страни**: подписва заявката |
| `restoken` | да | втора тайна, също споделена: приложението я използва, за да подпише отговора си |
| `color`, `icon` | не | как изглежда приложението в портала |
| `meta` | не | адрес (URL), който връща метаданните на приложението: екранът за настройка може да ги изтегли (`Apps/download`), за да попълни записа |
| `sortindex` | не | редът в списъка (ново приложение отива в края) |
| `notifications` | не | дали приложението може да изпраща известия |
| `isexternal` | не | приложението **не** се отваря в рамката на портала: отговорът към приложението съдържа `iframe: false` |
| `isbookmark` | не | приложението е обикновена връзка: без обмен на токени, само идентификатор на сесията в query string |
| `isnewtab` | не | отваря се в нов раздел на браузъра вместо в рамката на портала (настройката `newtab` го прави за всяко приложение) |
| `isscrollbar` | не | рамката на приложението в портала запазва лентата си за превъртане (порталът задава `scrolling` на `yes` или `no`) |
| `isdisabled` | не | изключва го за всички: потребителят получава "App has been temporary disabled" |
| `permissions` | не | списъкът с права на приложението: всяко има `id`, `name` и `value` (вижте [групи и права](/en/openplatform/groups-and-permissions/)) |

Таблицата `tbl_app` има и колона `allow` ("позволява само конкретни IP адреси"): когато съдържа адреси, приложението може да извиква крайните точки на протокола на OpenPlatform само от тях. Схемата за настройка по-горе не я изброява, така че е колона на базата данни, която попълвате директно.

## Двата токена

`reqtoken` и `restoken` никога не се изпращат към браузъра. OpenPlatform извежда от тях за всяко стартиране стойностите, които пътуват: токена в адреса на приложението и заглавката, която приложението връща. Извеждането е в [как се свързва едно приложение](/en/openplatform/how-an-app-connects/). Използвайте дълги случайни стойности и различна двойка за всяко приложение.

## Премахване и промяна

Приложението никога не се изтрива от таблицата: премахването му (`Apps/remove`) задава `isremoved` и датата на премахване и изчиства кеша на потребителите, които са го имали, а `isdisabled` го изключва без да го премахва. Когато адресът на платформата (настройката `url`) се промени, OpenPlatform изчиства връзките на известията на всеки потребител и изтрива отворените сесии на приложения, защото и двете съдържат този адрес ([настройки и база данни](/en/openplatform/settings-and-database/)).

Помнете правилото от README: регистрираното приложение не е видимо за никого, докато не му бъде присвоена група.
