Open mr-mr7 opened 6 months ago
سلام و وقت بخیر؛
برای تولید کد TOTP (رمز یکبار مصرف مبتنی بر زمان) گوگل در PHP، میتوانید از یک کتابخانه استفاده کنید که الگوریتم TOTP را مطابق با استاندارد RFC 6238 پیادهسازی میکند. اپلیکیشن Google Authenticator از این استاندارد استفاده میکند که بر اساس یک کلید مشترک و زمان فعلی کار میکند.
یک کتابخانه محبوب برای این کار در PHP "PHPGangsta/GoogleAuthenticator" است که میتوانید آن را با استفاده از Composer نصب کنید.
مراحل تولید کد TOTP گوگل در PHP
composer require sonata-project/google-authenticator
مثال
<?php
require 'vendor/autoload.php'; // اضافه کردن Autoloader Composer
use Sonata\GoogleAuthenticator\GoogleAuthenticator;
function getGoogleTotpCode($secret) {
// ساخت یک نمونه از GoogleAuthenticator
$gAuth = new GoogleAuthenticator();
// تولید کد TOTP
$totpCode = $gAuth->getCode($secret);
return $totpCode;
}
// روش استفاده:
$secret = 'YOUR_SECRET_KEY'; // این رشته رو با کدی که موقع ایجاد شناسایی دو عاملی از نوبیتکس گرفتین جایگزین کنین
$totpCode = getGoogleTotpCode($secret);
echo "کد TOTP شما: " . $totpCode;
توضیحات: کلید مخفی (Secret Key): متغیر secret کلید مخفی شماست که باید به صورت base32-encoded باشد. این کلید باید همان کلیدی باشد که هنگام تنظیم اپلیکیشن Google Authenticator در نوبیتکس استفاده شده است. این کلید بین کلاینت (اپلیکیشن Google Authenticator) و سرور نوبیتکس به اشتراک گذاشته شده. کلاس GoogleAuthenticator: کلاس GoogleAuthenticator در این کتابخانه متد getCode() را ارائه میدهد که کد TOTP فعلی را بر اساس کلید مخفی و زمان فعلی تولید میکند. کد TOTP: کد تولید شده برای یک دوره زمانی کوتاه (معمولاً ۳۰ ثانیه) معتبر است.
موفق باشید
هدف
احراز هویت از طریق api و دریافت توکن با وجود فعال بودن شناسایی دوعاملی توکن دریافتی نوبیتکس حداکثر 30 روز زمان انقضا داره و هر 30 روز یکبار باید بروزرسانی بشه من میخواستم عملیات بروزرسانی و دریافت توکن جدید رو داخل پس زمینه و جاب انجام بدم ولی برای اینکار نیاز به کدشناسایی دوعاملی هست که باید ادمین این کد از طریق google authenticator بخونه و وارد کنه ک بتونم اینکارو انجام بدم از طرفی چون این عملیات در پس زمینه انجام میشه نمیتونم کد دوعاملی رو از ادمین بگیرم ممنون میشم راهنمایی کنید باید چیکار کنم از زبان php و فریمورک laravel استفاده میکنم
محیط درخواست
نحوه درخواست
پاسخ دریافتی