参考您要在 FreeOTP 中使用的图像生成 QR 码的正确 URI 包括指向其公开可用位置的查询字符串参数:
...&image=http<s>://<image-path>
图片应为 .png。完全限定路径和协议。
将此添加到已为 QR 码创建的现有字符串中。在生成 QR 码之前,您必须对整个字符串进行 UrlEncode。
为清楚起见,urlencoding 之前的数据格式应为:
otpauth://totp/(<issuer>:)<accountnospaces>?secret=xxxxxxxxxx(&issuer=<issuer>)(&image=<imageuri>)
括号表示可选元素。例如:
otpauth://totp/Google:SampleName?MQ2TQNLEGMYTMOBXGY3Q&issuer=Google&image=http://google.com/image/logo.png
然后你对其进行urlencode:
otpauth%3A%2F%2Ftotp%2FGoogle%3ASampleName%3FMQ2TQNLEGMYTMOBXGY3Q%26issuer%3DGoogle%26image%3Dhttp%3A%2F%2Fgoogle.com%2Fimage%2Flogo.png
然后你生成一个你喜欢的二维码。例如,谷歌图表 API:
https://chart.googleapis.com/chart?cht=qr&chs=400x400&chl=otpauth%3A%2F%2Ftotp%2FGoogle%3ASampleName%3FMQ2TQNLEGMYTMOBXGY3Q%26issuer%3DGoogle%26image%3Dhttp%3A%2F%2Fgoogle.com%2Fimage%2Flogo.png
虽然 FreeOTP 支持此功能,但其他应用程序不支持。它不是 TOTP 规范的一部分,尽管它应该是。