扫描 QR 码不适用于 IOS 上的 Google Autneticator

Scanning QR Code does not work with Google Autneticator on IOS

我正在创建这个二维码 URL:

otpauth://totp/TEST:asfadsf?secret=CBPhavYImNauHrVP9KuoR5eE2fO-b_7s&issuer=TEST&algorithm=SHA-1&digits=6&period=30

如果我在 ios 上使用 google 身份验证器扫描此代码,我收到消息:

"The Code is not a valid authentication token"

我的二维码有问题吗?

我遇到了类似的问题并按如下方式解决了它们:

1.发行人:

我不发送用“:”分隔的发行者和用户,我只添加用户名。 &issuer="..."

已提供发行者信息

2。秘密:

密码必须是 base32 (RFC 3548/4648) 字符串。这基本上意味着由以下字符生成:“ABCDEDFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz234567

这里有一个根据需要生成随机秘密的函数:

generateRandomSecretTFA(length = 32) {
 let randomBytes = itf.generateRandomBytes(length); // function from node.js crypto module generating random bytes
 let rfc3548chars = 'ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghijklmnopqrstuvwxyz234567';
 let secret = '';
 for (let i = 0, l = randomBytes.length; i < l; i++) {
  secret += rfc3548chars[Math.floor(randomBytes[i] / 255.0 * (rfc3548chars.length - 1))];
 }
 return secret;
},

3。算法:

它在我这边工作了一段时间,就像你发送它一样 &algorithm=SHA-1 。然后不知何故它不会,我不得不像 &algorithm=SHA1 一样发送它。但无论如何 SHA-1/SHA1 是 Google 身份验证器使用的默认算法,因此我不再发送它了。

我现在生成 Google 身份验证器可读的 otpauth,就像这样:

otpauth://totp/test?secret=QePxfLm3PViiJvE2HCRNIsGxmdOJD5KP&issuer=Test&digits=6&period=30

我评论了我对你的例子的建议:

otpauth://totp/TEST:asfadsf?secret=CBPhavYImNauHrVP9KuoR5eE2fO-b_7s&issuer=TEST&algorithm=SHA-1&digits=6&period=30
               \__________/        \______________________________/             \_____________/
                    |                               |                                   +----------> 3.)
                    |                               +----------------------------------------------> 2.)
                    +------------------------------------------------------------------------------> 1.)