Способы авторизации через телеграм-бота в 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 на стороне МП сразу отпадает, т.к доступа к МП у меня нет и разрабы не имеют возможности это реализовать


Ответы (0 шт):