Лучше просто кнопкой:
виджет + зарегистрировать бота.
Пример проверки авторизации на PHP.
Если хотите как в вашем сценарии, это сложнее и менее надёжно.
Можно сделать, чтобы Бот отправлял Пользователю
JWT. В котором зашифрован Telegram-id Пользователя и, как вариант, время жизни этого токена.
Пользователь вводит этот токен у вас на сайте (или переходит по ссылке из сообщения бота), и ваш бэк его расшифровывает (ключи есть только у вас на бэке), убеждается в подлинности, и получает из него Telegram-id входящего Пользователя.
Когда токен просрочен или потерян, Пользователь всегда может получить свежий через бот. В БД для авторизации хранить ничего не надо.