@Artikul2

Как обработать дальше данные по авторизации через телеграм?

Приделал к сайту авторизацию через телеграм, это будет единственный способ авторизации:
<script async src="https://telegram.org/js/telegram-widget.js?19" data-telegram-login="mybot" data-size="large" data-auth-url="https://site.ru/user/auth.php" data-request-access="write"></script>

<?
define('BOT_TOKEN', '12223444:XXXXXXXXXXXXXXXXXXXXXXXXX');
function checkTelegramAuthorization($auth_data) {
  $check_hash = $auth_data['hash'];
  unset($auth_data['hash']);
  $data_check_arr = [];
  foreach ($auth_data as $key => $value) {
    $data_check_arr[] = $key . '=' . $value;
  }
  sort($data_check_arr);
  $data_check_string = implode("\n", $data_check_arr);
  $secret_key = hash('sha256', BOT_TOKEN, true);
  $hash = hash_hmac('sha256', $data_check_string, $secret_key);
  if (strcmp($hash, $check_hash) !== 0) {
    throw new Exception('Data is NOT from Telegram');
    $_SESSION['custom_auth'] = null;
  }
  if ((time() - $auth_data['auth_date']) > 86400) {
    throw new Exception('Data is outdated');
  }
  return $auth_data;
};
if (isset($_GET['hash'])) {
    try {
        $auth_data = checkTelegramAuthorization($_GET);
        echo "Hello, " . $auth_data['username'];
        $_SESSION['custom_auth'] = true;
    } catch (Exception $e) {
    	  $_SESSION['custom_auth'] = null;
        die ($e->getMessage());
    }
}
?>

Не пойму, что дальше сделать, что записать в куки чтобы узнавать пользователя, как продлевать сессию, чтобы не приходилось авторизовываться заново через 86400 секунд, если пользователь ходит по сайту. И как завершать его сессию принудительно и по его желанию?

Если сессия сама убивается, то видимо что то вносить надо в куку, чтобы сессия продлевалась?
Вопрос больше в безопасности и удобстве. Так, например при внутренней авторизации хешируют пароль и хранят в базе, а тут по сути внешняя авторизация с проверкой данных, т.е. вроде безопасно и на сайт не зайти без телеграм авторизации, подменив данные?!
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы