首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google验证器扫描时条形码无效

Google验证器扫描时条形码无效
EN

Stack Overflow用户
提问于 2014-06-17 16:49:21
回答 4查看 19.4K关注 0票数 6

下面是我生成二维码的代码

代码语言:javascript
复制
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应用程序扫描此代码时,它将生成一个错误

代码语言:javascript
复制
The barcode 'otpauth://totp/user4@noemail.com&secret=UOPKN6QFW3J6PW74' is not a valid authentication barcode.

但是,当“手动输入”使用密钥时,它会工作,我可以使用生成的密钥登录。

我在互联网上发现有人告诉我应该对数据进行urlencode,我确实这么做了,但还是不起作用。

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

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

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

EN

回答 4

Stack Overflow用户

发布于 2015-01-22 17:24:45

只需将&secret=替换为?secret= (别忘了对url进行编码)。

我也不知道这里是不是这样,但是帐户名不能有空格。如果你用安卓手机扫描就行了,但用iPhones就不行了(想想看!)

票数 9
EN

Stack Overflow用户

发布于 2016-12-07 19:44:38

似乎Google和IOS Authenticator应用程序都不喜欢OTP二维码中的“帐号名称”中的空格。将它们替换为-或_,或将其删除。

Windows phone应用程序允许使用空格,而我6个月前安装在Android手机上的一个版本可以正常工作。我没有机会测试IOS,但看起来IOS有一个问题。手动输入钥匙很好,但不会扫描包含空格的二维码。

票数 8
EN

Stack Overflow用户

发布于 2014-06-18 17:19:21

您应该对传递给图表API的数据进行完全URL编码。

otpauth%3A%2F%2Ftotp%2Fuser4%40noemail.com%26secret%3DUOPKN6QFW3J6PW74

这将确保数据被正确编码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24259449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档