Способы авторизации через телеграм-бота в React приложении
На моём сайте интегрирован виджет, который общается с моим телеграм ботом
Примерно так выглядит реализация
const TelegramAuth: FC<Props> = ({ callback }) => {
const { token } = useAuth()
const checkSubscription = async (userId: number) => {
try {
const response = await apiCheckMember(userId, token)
if (response.inChat) {
// bla bla
} else {
// bla bla
}
} catch (error) {
console.log(error)
}
}
useEffect(() => {
const button = document.createElement('script')
button.async = true
button.src = 'https://telegram.org/js/telegram-widget.js?22'
button.setAttribute('data-telegram-login', 'name_bot')
button.setAttribute('data-size', 'large')
document.body.appendChild(button)
return () => {
document.body.removeChild(button)
}
}, [])
return (
<button
onClick={() => {
window?.Telegram.Login.auth(
{
bot_id: `${process.env.REACT_APP_BOT_ID}`,
request_access: true,
redirect_uri: 'https://mysite.ru/',
},
(data) => {
checkSubscription((data as Data).id)
if (!data) {
callback(2)
}
}
)
}}
className='btn secondary'
>
АВТОРИЗОВАТЬСЯ
</button>
)}
При нажатии на "АВТОРИЗОВАТЬСЯ" юзера перебрасывает на страница авторизации и в случае успеха редиректит обратно и вызывается callback, который я передаю в Telegram.Login.auth()
Важный момент, что после того, как происходит редирект на мою страницу, вызывается запрос https://oauth.telegram.org/auth/get в который прокидываются Cookies stel_token и stel_ssid
И в целом, в браузере всё работает на ура
НО
Мой сайт интегрирован в мобильное приложение, как WebView И на этапе вызова https://oauth.telegram.org/auth/get, куки stel_token и stel_ssid не передаются
Есть ли какие-то другие варианты авторизации, чтобы обойти отправку куков?
Буду рад любым вариантам
Вариант Сохранять куки в WebView на стороне МП сразу отпадает, т.к доступа к МП у меня нет и разрабы не имеют возможности это реализовать