PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ویجت لاگین تلگرام Telegram [آموزش]



shahinmq
March 26th, 2018, 22:11
دربرخی سایت ها احتمالا مشاهده کردید گزینه ای جهت ورود به حساب کاربری با استفاده از Google یا Facebook و ... قرارداده شده است.

از آنجایی که تلگرام در ایران بازدهی بالایی داشته و احتمالا اکثر ایرانیان نیز اکانت تلگرام دارند ، هم اکنون مثل مثال زده شده می توانید از Telegram Login Widget استفاده کنید تا کاربر سریعتر و بدون نیاز به وارد کردن نام کاربری و رمز عبور وارد حساب کاربری خود شود.

1- ابتدا یک بات از طریق botfather ایجاد کنید.

2- در همان botfather ، از قسمت Bot Settings، دامنه ی خودرا ذخیره کنید.

3- وارد آدرس https://core.telegram.org/widgets/login شوید.

4- در اواسط صفحه ، تنظیمات مورد نظر خودرا انجام دهید و Authorization Type را بر روی Redirect to url قراردهید و آدرسی که مایلید کاربر پس از ورود به آن منتقل شود را وارد کنید.

5- کد قرارداده شده برای شما را در سایت خود کپی کنید.

6- پس از ورود شماره همراه ، یک تاییدیه برای کاربر ارسال می شود و درصورت تایید مشخصات آن شامل userid,username,full name,profile picture برای شما به صورت GET به آدرس Redirect ارسال می شود.

حال شاید سوال شود ، شخص می تواند با وارد کردن userid در قالب GET بدون نیاز به هرچیزی وارد حساب کاربری خود شود که یک ضعف امنیتی حساب می شود.

برای رفع این مشکل یک پارامتر دیگر به آدرس شما ارسال می شود (پارامتر hash) که با استفاده از الگوریتم ارائه شده توسط خود تلگرام می توانید متوجه شوید این درخواست از سمت تلگرام ارسال شده یا جعلی می باشد.

همچنین هر hash یک زمان انقضا دارد.

نمونه کد php جهت بررسی ارسال :


function check_hash($bot_token)
{
if(!isset($_GET['hash']))
return false;
$data = $_GET;
unset($data['hash']);
$data_check_arr = [];
foreach ($data as $key => $value)
$data_check_arr[] = $key . '=' . $value;
sort($data_check_arr);
$data_check_string = implode("\n", $data_check_arr);
$user_hash = $_GET['hash'];
$secret_key = hash('sha256', $bot_token, true);
$hash = hash_hmac('sha256', $data_check_string, $secret_key);
if (strcmp($hash, $user_hash) !== 0)
return false;
if ((time() - $_GET['auth_date']) > 86400)
return false;

return ture;
}
if(check_hash("BotToken") === true)
echo 'welcome';
else
echo 'login error';

بجای BotToken باید ، توکنی که در زمان ساخت بات ، botfather به شما داده است را وارد کنید.

جهت تشخیص کاربر ، باید از قبل userid کاربر را توسط بات دریافت کرده باشید و با اتصال userid به حساب کاربری شخص می توانید فرایند تشخیص را انجام دهید.

مقدار userid برای هرکاربر همیشه مقداری ثابت است و تکراری در آن وجود ندارد.

بجای echo 'welcome'; یا echo 'login error'; می توانید کاربر را به آدرس دیگر هدایت کنید یا فرایند ورود به حساب کاربری را انجام دهید.

vistaix
March 28th, 2018, 13:04
سلام و درووود
بسیار عالی و کاربردی
همیشه از آموزش و کمک های شما در انجمن استفاده کردیم
نمونه ی قبلی هم اسکریپت درگاه پاسارگاد بود... که بسیار کمک کرد به بنده
1 سوال فنی هم داشتم از شما که براتون توی تلگرام پیام گذاشتم.