- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 Google 2 因素授权,只是作为一个实验,并非出于任何实际原因。
我使用的代码来自:here
我通过一个有两个参数 $username 和 $secret 的函数构建了一个二维码 URL
$qrcode_url = "https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/{$username}%3Fsecret%3D{$secret} ";
这会正确构建一个 URL。
$username
参数是正在登录的用户。
$secret
参数由 Google2FA::generate_secret_key()
生成
但是,当我加载请求二维码的页面时,Google 会提示“您的客户发出了格式错误或非法的请求”。这就是烦人的地方。如果我单击地址栏并再次发送请求,它将加载提供正确 OTP(一次性密码)的 QR 码。然后,如果我重新加载带有二维码的页面,它也会正确加载。
关于导致此问题的原因有任何想法吗?这与我在本地 XAMPP 上运行它没有任何关系,对吗?
提前致谢! :]
编辑:只是想让你知道,我不认为这是一个缓存问题,因为我已经清除了它,但它仍然很糟糕。
最佳答案
我似乎已经通过混合使用 cURL 和不同的 URL 来访问图像来解决这个问题。
这是我的完整解决方案:
<?php
public static function get_qr_code_url( $username, $secret )
{
$h = 100;
return 'http://chart.apis.google.com/chart?chs=' . $h . 'x' . $h .
'&chld=M|0&cht=qr&chl=' . urlencode( 'otpauth://totp/' . $username . '@' . $_SERVER['HTTP_HOST'] . '?secret=' . $secret );
}
public static function get_qr_code( $username, $secret )
{
if( FALSE === $secret )
{
return FALSE;
}
$url = self::get_qr_code_url( $username, $secret );
$curl_handle = curl_init();
$headers = array( 'Expect:' );
$options = array(
CURLOPT_URL => $url,
CURLOPT_CONNECTTIMEOUT => 2,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_USERAGENT => 'My-Google-Auth',
CURLOPT_HTTPHEADER => $headers
);
curl_setopt_array( $curl_handle, $options );
$query = curl_exec( $curl_handle );
curl_close( $curl_handle );
$base_64= chunk_split( base64_encode( $query ) );
return '<img class="google_qrcode" src="data:image/gif;base64,' . $base_64 . '" alt="QR Code" />';
}
?>
我想我可能对此进行改进的唯一方法是将图像实际保存到服务器并保留本地副本,直到重新生成 key 或其他东西。但那是如果我要在适当的环境中实现它! :]
感谢@Brad 的帮助!
关于php - Google 2 因素身份验证二维码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11074191/
The proper divisors of a positive integer, n, are all the positive integers that divide n evenly oth
我有这个命令行 $ sudo find /etc/grub.d | sort | tail -n 1 | xargs sudo cat | wc 我想用一个 sudo 命令执行 $ sudo --so
选项大小策略和拉伸(stretch)因子如何影响小部件的大小? 下图显示了三个不同排列的窗口的预览。对于所有三个窗口 (W1-W3),右侧的小部件是一个 QFrame 小部件,其水平和垂直大小策略设置
每次当我必须重新编码一组变量时,我都会想到 SPSS 重新编码功能。我必须承认这很简单。有一个类似的recode函数在 car包,它可以解决问题,但让我们假设我想用 factor 完成任务. 我有 d
这个问题在这里已经有了答案: Template issue causes linker error (C++) [duplicate] (6 个答案) 关闭 9 年前。 我的问题查了没用所以特地来问
我想使用 Eigen 来计算稀疏矩阵的 cholesky 分解。但是,结果不正确,我找不到原因。我如何获得正确答案? Eigen 中是否实现了特殊例程,利用稀疏矩阵的结构来提高性能(例如,对于下例中的
我正在尝试使 angularjs 应用程序在配置( http://12factor.net/config )方面符合 12 因素。 它应该取决于环境,我不应该看到 development 字样, te
我在我的项目中使用 Soil,我在我的包含目录中添加了 soil,在我的预编译头文件中我包含了“Soil.h”。对于我预编译头中的库,我添加了这个: #pragma comment(lib,"SOIL
在我的 Web 应用程序中,我将所有最终用户的日期信息以 UTC 格式存储在数据库中,在向他们显示之前,只需将 UTC 日期转换为他们选择的时区。 我正在使用此方法将本地时间转换为 UTC 时间(在存
我的申请是 Piwik Server从放置在数百个网站上的跟踪代码接收传入的跟踪数据。当这些跟踪请求进入时,大部分工作负载是每秒向数据库写入数百次。我使用的是带有 JDBC 和 Hibernate 的
我有一个非常简单的 GWT 应用程序,它收集一些数据并在用户单击“提交”时提供确认对话框。我创建了一个 com.google.gwt.user.client.ui.DialogBox,填充它,然后调用
我正在使用 Delphi(2009 年,没关系)和 IBX,并且我正在尝试执行简单的代码: TestSQL.ExecQuery; 在此代码之前,我已检查(也可以在调试器监视中看到)TestSQL.Tr
许多线性代数例程都将常量(例如 alpha 和 beta)作为参数。例如cublas?GEMM执行以下操作: C := alpha*op( A )op( B ) + betaC 假设我将 beta 设
我是一名优秀的程序员,十分优秀!