Получения номера телефона (телеграм) пользователя с сайта
Делаю авторизацию на сайте 1с битрикс с помощью телеграм. Использую их виджет "Telegram Login Widget". После авторизации с помощью виджета можно получить следующие данные:
id – уникальный идентификатор пользователя в Telegram
first_name, last_name – фамилия и имя из профиля пользователя
username – уникальное имя из профиля
photo_url – ссылка на аватарку пользователя в виде https://t.me/i/.../user.jpg
auth_date – дата авторазации
hash – HMAC-подпись ответа на основе секретного токена бота
Но в данном списке нету phone_number, возможно ли его как-то получить, с помощью api например?
Пробовал следующие варианты
<script src="https://telegram.org/js/telegram-widget.js?7" data-telegram-login="name_bot" data-size="large" data-onauth="onTelegramAuth(user)"></script>
<?php
$botToken = 'token';
$userId = $_GET['id'];
echo '$userId - ' . $userId;
$apiUrl = "https://api.telegram.org/bot$botToken/setwebhook?url=https://test.ru/testTelegramAuth/auth.php";
$method = "getUser";
$params = [
'user_id' => $userId
];
$queryUrl = $apiUrl . '/' . $method . '?' . http_build_query($params);
$response = file_get_contents($queryUrl);
$data = json_decode($response, true);
if ($data['ok']) {
$user = $data['result'];
$phoneNumber = $user['phone_number'];
// Обработка номера телефона по необходимости
echo 'Номер телефона: ' . $phoneNumber;
} else {
echo 'Ошибка получения информации о пользователе';
}
?>
<script>
function onTelegramAuth(user) {
let phoneNumber = user.phone_number;
// Обработка номера телефона по необходимости
console.log('Номер телефона: ' + phoneNumber);
}
</script>
Ответы (1 шт):
Автор решения: Victor Karich
→ Ссылка
Можно указать параметр request_contact=true для кнопки https://core.telegram.org/bots/api#keyboardbutton, тогда будет передан номер