В данном топике хочу описать дополнительный, а для некоторых сервисов возможно и основной способ авторизации и регистрации пользователя через Telegram, подобно OAuth авторизации через социальные сети и web-сервисы.
Допустим, у Вас есть некий сервис, который предлагает пользователям вход через Telegram. На странице авторизации пользователю предлагается ввести его Username в Telegram. После ввода Username, на аккаунт пользователя приходит сообщение с кодом подтверждения, который он вводит на странице авторизации.
В первую очень нам потребуется «живой» аккаунт в Telegram, то есть аккаунт который зарегистрирован на мобильный номер телефона. В данном случае боты не подходят для данной задачи, так как боты не могут писать сообщения первыми.
Теперь что касается серверной стороны.
На странице приложений Telegram есть не официальное приложение telegram-cli. Оно и будет выполнять функцию приложения которое будет взаимодействовать с сервером Telegram.
Для упрощения примера telegram-cli будем ставить в каталог /usr/local/src/:
cd /usr/local/src/
Клонируем репозиторий:
git clone --recursive <a href="https://github.com/vysheng/tg.git">https://github.com/vysheng/tg.git</a> && cd tg
Ставим необходимые пакеты:
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev python-dev
Собираем telegram-cli:
./configure make
При первом запуске, приложение попросит ввести номер телефона нашего «живого» аккаунта. После ввода номера, будет выслан код подтверждения по смс или в приложение если данный аккаунт сейчас активен на другом устройстве. После подтверждения, в вашем домашнем каталоге будет создана директория ".telegram-cli" в которой будут хранится файлы конфигураций для указанного аккаунта.
Запускаем:
/usr/local/src/tg/bin/telegram-cli -k /usr/local/src/tg/tg-server.pub
Видим следующую картину:
Выходим из приложения:
quit
Запускаем приложение как демон например на порту 8089:
/usr/local/src/tg/bin/telegram-cli --json -k /usr/local/src/tg/tg-server.pub -W -d -P 8089 &
Теперь нам необходим скрипт который будет взаимодействовать с telegram-cli.
По ключевым словам(telegram-cli php client) на GitHub было найдено готовое решение на PHP.
Установка:
git clone https://github.com/zyberspace/php-telegram-cli-client
cd php-telegram-cli-client
curl -sS https://getcomposer.org/installer | php
php composer.phar install
Создаем файл tg.php со следующим содержанием:
<?php require('vendor/autoload.php'); $telegram = new \Zyberspace\Telegram\Cli\Client('tcp://localhost:8089'); $USERNAME = ''; if($user = $telegram->exec("resolve_username {$USERNAME}")){ if($user->type == 'user'){ $code = mt_rand(10000, 99999); $message = "Hi {$user->first_name}! Your code: {$code}"; if($telegram->exec("msg user#{$user->id} {$message}")){ echo "Send message: Success\r\n"; } else { echo "Send message: Error\r\n"; } } } else { echo "User {$USERNAME} not found.\r\n"; }
В переменную $USERNAME вписываем username пользователя которому будет отправлено сообщение с кодом подтверждения.
Запускаем скрипт:
php tg.php
Если все прошло успешно, пользователю будет отправлено сообщение с кодом.
На базе данного примера можно легко реализовать регистрацию/авторизацию пользователей через Telegram.
Спасибо за внимание!
ссылка на оригинал статьи http://habrahabr.ru/post/264301/
Добавить комментарий