使用PyOTP生成OTP二维码后,Microsoft Authenticator不显示Logo求助
Microsoft Authenticator不显示自定义OTP Logo的原因及解决办法
问题背景
使用PyOTP生成带image参数的OTP URI,二维码可被Microsoft Authenticator识别,OTP验证正常,但始终显示账户首字母而非指定Logo。相关代码:
import pyotp totp = pyotp.TOTP("secret") uri = totp.provisioning_uri(name='User', issuer_name='Example', image='https://ecoedgeai.com/wp-content/uploads/2024/02/cropped-eeai-logo-1-95x54.png') print(uri)
生成的URI:
otpauth://totp/Example:User?secret=secret&issuer=Example&image=https%3A%2F%2Fecoedgeai.com%2Fwp-content%2Fuploads%2F2024%2F02%2Fcropped-eeai-logo-1-95x54.png
核心原因
Microsoft Authenticator对自定义Logo的显示有严格限制,主要包括以下几点:
- 优先使用内置数据库Logo:如果你的
issuer_name(如示例中的Example)存在于Microsoft的官方issuer数据库中,Authenticator会直接使用数据库里的官方Logo,忽略image参数。 - 图片参数的硬性要求:
- 图片必须为正方形(推荐64x64或128x128像素),非正方形图片会被拒绝显示。你的图片是95x54,不符合比例要求。
- 图片URL必须是HTTPS协议,且无跳转(直接返回图片资源)。
- 图片服务器需配置正确的CORS跨域头,允许Microsoft Authenticator的访问请求。
- 版本兼容性:旧版本的Microsoft Authenticator可能完全不支持
image参数,需确保应用是最新版本。
解决步骤
- 调整图片为正方形尺寸(如64x64),重新上传后更新URI中的image链接。
- 使用curl检查图片URL的响应头,确认无重定向且包含正确的CORS头(如
Access-Control-Allow-Origin: *):curl -I https://your-image-url.png - 更新Microsoft Authenticator到应用商店的最新版本。
- 如果以上都无效,可尝试将你的issuer提交至Microsoft的官方数据库(此流程需符合Microsoft的品牌规范,周期较长)。
内容的提问来源于stack exchange,提问作者Zain Ul Abidin
相关产品推荐
相关产品推荐

