php - Google 身份验证器扫描时条形码无效

标签 php qr-code google-authenticator

这是我生成二维码的代码

public function getUrl($user, $hostname, $secret) {
      $encoder = "https://chart.googleapis.com/chart?chs=200x200&chld=M%70&cht=qr&chl=";
      $encoderURL = sprintf( "%sotpauth://totp/%s@%s",$encoder, $user, $hostname);
      $finalEncodorURL = $encoderURL . "%26secret=". urlencode($secret);
      return $finalEncodorURL;
}

据说这会生成一个二维码,它确实会生成。但是当我使用 google authenticator app 扫描这段代码时,它会产生一个错误

The barcode 'otpauth://totp/user4@noemail.com&secret=UOPKN6QFW3J6PW74' is not a valid authentication barcode.

但是当使用 key “手动输入”时,它会起作用,我可以使用生成的 key 正常登录。

我在互联网上发现一些东西说我应该对数据进行 urlencode,我做到了,但它仍然不起作用。

下面是上述函数生成的示例 url:

https://chart.googleapis.com/chart?chs=200x200&chld=M%70&cht=qr&chl=otpauth://totp/user4@noemail.com%26secret=UOPKN6QFW3J6PW74

我是不是遗漏了什么或做错了什么?

最佳答案

只需将 &secret= 替换为 ?secret=(不要忘记进行 url 编码)。

另外我不知道这里是不是这种情况,但是帐户名不能有空格。如果您使用 Android 进行扫描,但使用 iPhone 则不行(想想吧!)

关于php - Google 身份验证器扫描时条形码无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24259449/

相关文章:

java - 在 Android 应用程序中解码二维码?

Perl Authen::OATH 和 Google Authenticator - 不兼容?

php - 创建 Wordpress 子插件

php - 如何使用 PHP 5.5.14 在 Yosemite 上启用 fastcgi

php - 使用 PHP QR Code Generator 在 PHP 中创建带有居中 Logo 的 QR 码

javascript - 如何让二维码阅读器识别您生成的二维码?

php - Zend_Auth 和动态更改 UI 上的用户详细信息

php - 为 SELECT...BETWEEN 查询创建正确的日期格式

qr-code - 如何为 Google Authenticator 生成正确显示在 OTP 上方显示的 Issuer 的 QR 码?

ios - 无效的条形码 - Google Authenticator - iOS - 用 = 填充