PHP v7.4,Laravel v7.28.3 我使用 pragmarx/google2fa-laravel
二维码生成:
$google2fa = app('pragmarx.google2fa');
$google2fa->setAlgorithm(Constants::SHA512);
$secret = $google2fa->generateSecretKey(64);
$user->google2fa_secret = $secret;
$user->save();
$QR_Image = $google2fa->getQRCodeInline(
config('app.name'),
$user->email,
$user->google2fa_secret
);
然后我在前端渲染 QR。二维码看起来很完美,我用谷歌 2fa 应用程序扫描它,代码生成器成功添加到应用程序。
当我尝试验证来自应用程序的代码时,它总是返回 false。验证码:
$code = 'I paste here the code from the application manually';
$google2fa = app('pragmarx.google2fa');
var_dump($google2fa->verifyKey($user->google2fa_secret, $code, 10));
但是,当我使用 $user->google2fa_secret 手动将代码生成器添加到移动应用程序时(我可以在数据库中检查它),它工作得很好,来自这个生成器的所有代码都通过了验证。似乎问题出在生成的 QR 图像中......