扫描 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.)
我正在创建这个二维码 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.)