Мне нужно реализовать авторизацию пользователей через telegram на моем сайте. Подскажите, как это можно сделать. В документации Telegram Api вообще не мог разобраться. В интернете одни мануалу по созданию ботов. Если можно, пожалуйста, напишите на php или хотя бы ссылки на ресурсы по этой теме.
На сайте уже есть авторизация? какова структура сайта? Есл не ошибаюсь, официальной oauth2 авторизации через Телеграм нет. Наиболее простой вариант - авторизировать через бота. Пользователь может начать чат с ботом по ссылке, передав дополнительные параметры. На стороне сайта вы просто можете сохранять в базу всех, кто постучит боту. За счет параметров в ссылке можно точно определить что пользователь пришел с сайта и проверять актуальность ключа. В качестве логина можно использовать ID телеграма, высылать пароль при регистрации или восстановлении.
Этот называется Deep linking и описано в официальной документации.
Вот минимальный пример кода из некогда рабочего бота.
<?php
// Telegram URL, token, API url
define('TOKEN', '***BOT_TOKEN***');
define('URL', 'https://api.telegram.org/bot'.TOKEN.'/');
// Bot input
$input = json_decode(file_get_contents('php://input'), true);
// User data
$chat_id = $input['message']['chat']['id'];
$username = $input['message']['from']['username'];
$full_name = $input['message']['from']['last_name'].' '.$input['message']['from']['first_name'];
$date = $input['message']['date'];
$text = $input['message']['text'];
// User auth
if ( explode( ' ', $text )[1] == SITE_TOKEN ){
$user = $DB->select( 'users', $chat_id );
if ( !$user ){
$userPassword = generatePassword();
$DB->insert( 'users', makeUser( $chat, $userPassword, $full_name, $date ) );
send_keyb(
$chat,
"Добро пожаловать, {$full_name}. Вы зарегистрированы как {$username}!
Пароль для доступа к сайту: {$userPassword}",
mainMenu()
);
}
else {
send_keyb(
$chat,
"Вы уже зарегистрированы как {$username}!
Чтобы восстановить пароль, нажмите: /forot_password",
mainMenu()
);
}
}
?>
Формат данных от пользователя при переходе по ссылке:
https://telegram.me/your_site_bot?start=2a79RhELHUoC5stlOqI6pnz1bTmjuFMWSdye8xKZi4XcG0VNrJPBA3gfQDwkYv
{"update_id":000000000,"message":{"message_id":0000,
"from":{"id":000000000,"is_bot":false,"first_name":"FIRST_NAME","username":"USERNAME","language_code":"en-US"},
"chat":{"id":000000000,"FIRST_NAME":"#","username":"USERNAME","type":"private"}, "date":1505645689,
/// USER TOKEN FROM SITE
"text":"/start 2a79RhELHUoC5stlOqI6pnz1bTmjuFMWSdye8xKZi4XcG0VNrJPBA3gfQDwkYv",
"entities":[{"offset":0,"length":6,"type":"bot_command"}]}}
так же есть реально рабочий пример на github.com
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Заказывал парсер, мне его написали, все здорово, спарсенное сохраняется в json базу и выводится на сайте
Поставил себе задачку по php и mysql вывести список новостей и название категорий, к которым относятся эти самые новости
У меня есть таблица на 30500 записейВ ней находятся города, районы, и всякие населенные пункты
Подскажите как прописать ссылку в htaccessне переключается постраничный вывод из файла , в браузере выводится ссылка, а на странице не переключается