这是我生成二维码的代码
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;
}
据说这会生成一个二维码,而且确实如此。但是当我使用谷歌身份验证器应用程序扫描此代码时,它会产生错误
The barcode 'otpauth://totp/user4@noemail.com&secret=UOPKN6QFW3J6PW74' is not a valid authentication barcode.
但是当使用密钥“手动输入”时,它会起作用,我可以使用生成的密钥很好地登录。
我在互联网上发现了一些东西,说我应该对数据进行 urlencode,我做到了,但它仍然无法正常工作。
这是由上述函数生成的示例 url:
https://chart.googleapis.com/chart?chs=200x200&chld=M%70&cht=qr&chl=otpauth://totp/user4@noemail.com%26secret=UOPKN6QFW3J6PW74
我错过了什么或做错了什么?