Steam所用代码验证器是使用非标准的TOTP
详细可以查查Google Authenticator的原理
但是Steam上因为相容旧有的验证系统(信箱)
简单解释一下 基本原理
当Steam Apps登录后,双方会自动取得共享金钥并储存下来
双方利用此共享金钥加上时间(可能用30-60秒间隔)来做计算
用户→金钥+时间→计算当前的验证码→Steam服务器端
服务器端的验证方式我不确定,不过基本上就下面二种
1.Steam 服务器端→收到验证码→验证码+时间→反推金钥→验证金钥是否正确
2.Steam 服务器端→收到验证码→(共享金钥+时间)算出验证码→比对验证码是否正确
我认为第二种可能性比较高
时差部份没问题,只要计算时用双方统一使用UTC+0的时区即可同步
手机app无网络也没关系,你已经有共享金钥+时间,只要注意时间是否有校正至标准时间
当你手机时间有误差太大时,所计算出来的验证码就会跟Steam端的验证码不符合
即使你手上的金钥是正确的,也会因为时间的关系产生出错误的验证码
另外提醒一下有用APP验证的版友们,备用代码≠救援代码
备用代码是你临时忘了带手机,要登入STEAM时用的一次性代码用完就会注销
而救援代码是你手机遗失时,要移除掉App验证时用的
救援代码取得方式
Steam Mobile的Steam Guard里取得并保存好
┌────────────┐
│≡ Steam Guard │
├────────────┤
│ S T E A M │
│□□███████□□ │
│ Steam Account │
├────────────┤
╞════════════╡
│设定 │
│Steam 行动验证器 │
├────────────┤
│My Recovery Code │
├────────────┤
│帮助 │
├────────────┤
│ │
│ │
│ │
│ │
│ │
│ │
└────────────┘
救援代码的格式为R+上五个数字
例:R12345
如果手机掉了,还能用救援代码去取消手机App验证
备用代码取得方式
请使用Steam用户端或是网页进入下面取得
https://store.steampowered.com/twofactor/manage