~lord/krasovs.ky

4cf3dca02c3aae13edfc854089554130a5bc8543 — Savely Krasovsky 13 days ago 0faac6e
fix(telegram-web-apps): few fixes
2 files changed, 21 insertions(+), 2 deletions(-)

M content/blog/telegram-web-apps.md
A static/telegram_web_app_wallet.png
M content/blog/telegram-web-apps.md => content/blog/telegram-web-apps.md +21 -2
@@ 13,6 13,7 @@ layout: post

![Виды кнопок](/telegram_web_app_buttons.jpg)

## Кнопка меню, inline-кнопка
Первый и второй способ предлагают нам аутентифицировать и авторизовать пользователя через специальный объект `initData`,
который можно достать с помощью JavaScript. Объект имеет следующую структуру:
```json


@@ 88,7 89,8 @@ layout: post
- требуется собственный бэкенд для веб-части для валидации <code>initData</code> и работы с пользователем
</div>

Вернёмся к способам активации. С первым и вторым способом всё понятно: вы получаете от Telegram подобие готового токена
## Keyboard-кнопка
С первым и вторым способом всё понятно: вы получаете от Telegram подобие готового токена
и поэтому реализация собственной аутентификации и авторизации не требуется, требуется только валидация.

Но с третьим способом ситуация с одной стороны проще, с другой сложней. Дело в том, что `initData` не приходит


@@ 119,10 121,27 @@ layout: post
- отправить информацию боту можно только 1 раз
</div>

## Кнопка в меню вложений
Есть также четвертый способ, который технически не отличается от первого и второго
(только дополнительными полями в `initData`), но в этом случае бот добавляется
в меню вложений.

К сожалению эта возможность пока что доступна только для тех, кто участвует в рекламной платформе Telegram
и, следовательно, внёс залог 2 миллиона евро. Поэтому пока что говорить тут особо не о чем.
Из известных мне публичных ботов такую интеграцию использует [@wallet](https://t.me/wallet).
\ No newline at end of file
Из известных мне публичных ботов такую интеграцию использует [@wallet](https://t.me/wallet).

Основной плюс — возможность использовать бота не только в личной переписке с ботом.
Например, вышеупомянутый @wallet позволяет отправить любому собеседнику сообщение с информацией о переводе,
собеседнику остается лишь нажать и получить свой перевод.

![Вид такого сообщения](/telegram_web_app_wallet.png)

<div class="alert alert-success">
+ плюсы первых двух способов<br/>
+ возможность использовать бота в переписке с человеком<br/>
+ новый интуитивный механизм использования ботов Telegram
</div>
<div class="alert alert-error">
- минусы первых двух способов<br/>
- необходимо стать крупным рекламодателем на площадке Telegram
</div>
\ No newline at end of file

A static/telegram_web_app_wallet.png => static/telegram_web_app_wallet.png +0 -0